2010-12-20 115 views
0

我有一堆來自舊網站的網址,我最近更新到EE2。這些URL看起來像這樣:
http://www.example.com/old/path.asp?dir=Folder_Name在URL中使用查詢字符串參數重定向URL

這些網址需要重定向到:
http://www.example.com/new_path/folders/folder_name

並非所有Folder_Name字符串匹配了folder_name URL段,所以這些將很可能需要是靜態的重定向。

我嘗試以下規則名爲「Example_One」一個特定的文件夾映射到一個頁面上的所謂的「例1」的新網站:

Redirect 301 /old/path.asp?dir=Example_One 
      http://www.example.com/new_path/folders/example1 

但是,這是行不通的。而不是重定向我只是得到一個404錯誤,告訴我http://www.example.com/old/path.asp?dir=Example_One無法找到。

編輯:
這裏也可能會或可能不會進行相關的還有一個次要問題:我有一個包羅萬象的規則是這樣的:
重定向301 /old/path.asp http://www.example.com/new_path

使用規則,像上面的第一個請求將被重定向到:
http://www.example.com/new_path?dir=Folder_Name這會觸發404錯誤。

回答

0

只是爲了找到mod_rewrite的正確語法,多花點功夫。

使用上面的例子:

RewriteCond %{QUERY_STRING} ^dir=Example_One$ 
RewriteRule ^/old/path\.asp$ /new_path/folders/example1? [R=301,L] 

這解決上述兩種問題 - 爲何EE與查詢字符串一個參數404ing,這個問題仍然沒有解決,但這種工作方式解決該問題的解決方法。

您也可以將URL重定向到每次參數可能具有不同值的特定頁面。這方面的一個例子是谷歌UTM系列跟蹤的(在這樣的情況下跟蹤查詢字符串觸發404):

鏈接:http://www.example.com/?utm_source=xxx& .....(404觸發器)
應該重定向到:http://www.example.com

RewriteCond %{QUERY_STRING} ^utm_source= 
RewriteRule ^$ http://www.example.com? [R=301,L] 

注意:這隻會將這些請求重定向到首頁,如^ $所定義。如果您想要將utm請求重定向到其他頁面,則需要更改該RewriteRule的第一部分。

+0

如果還有其他查詢字符串參數(例如http://www.example.com/old/path.asp?dir=Example_One&a=b),則不會運行^ dir = Example_One $? – 2013-02-05 10:04:22

相關問題