2015-01-09 145 views
1

我有一些舊URL需要修復,因爲論壇遷移。.htaccess - 重寫查詢字符串並重定向到目錄

舊的URL的樣子: http://www.example.com/forum/topic.asp?TOPIC_ID=666

我想他們重定向到: http://www.example.com/forum/missions/666

我的做法是這樣的,但我抓我的頭,因爲它沒有在所有的工作:

RewriteCond %{QUERY_STRING}  ^TOPIC_ID=(.*)$ [NC] 
RewriteRule ^/forum$  /forum/missions/%1  [NC,L,R=301] 
+0

這似乎是它的倒車。您似乎希望用戶能夠訪問http://www.example.com/forum/missions/666並查看服務器解析爲http://www.example.com/forum/topic.asp的內容? TOPIC_ID = 666。那是對的嗎? – Ding 2015-01-09 22:31:49

回答

1

假設有在`/論壇/無的.htaccess,你可以在你的.htaccess根用這個第一條規則

RewriteCond %{QUERY_STRING} ^TOPIC_ID=([^&]+) [NC] 
RewriteRule ^forum/topic\.asp$ /forum/missions/%1? [NC,L,R=302] 

如果在/forum/ htaccess的,那麼你可以使用這第一條規則/forum/.htaccess

RewriteCond %{QUERY_STRING} ^TOPIC_ID=([^&]+) [NC] 
RewriteRule ^topic\.asp$ /forum/missions/%1? [NC,L,R=302] 
+1

謝謝,第一個只是像預期的那樣工作。我可以從這裏繼續使用這個語法:) – 2015-01-09 22:42:01

+0

不客氣,很高興它解決了。 – anubhava 2015-01-09 22:44:53

0

我建議這一點,但真的不能從這裏:)

嘗試
+0

你不能那樣做,因爲查詢字符串(在?之後的部分)不在RewriteRule使用的字符串中。 – Croises 2015-01-09 23:27:21

+0

我肯定需要一個關於這方面的教訓:) – sodawillow 2015-01-09 23:29:15

+0

我學習所有anubhava ;-) – Croises 2015-01-09 23:29:58