2011-09-21 47 views

回答

1

使用mod_rewrite的(已安裝並啓用)爲使用Redirect指令不幸你所無法比擬的查詢字符串 - mod_rewrite的是隻知道我的選擇(除非你很高興在你的PHP/ASP/etc代碼中執行)。

# enable rewrite engine 
Options +FollowSymLinks 
RewriteEngine On 

# the actual rule 
RewriteCond %{QUERY_STRING} ^id=1$ 
RewriteRule ^cat/$ http://domain.com/catalog/180/? [R=301,L] 

?在新網址的結尾是用來丟棄當前的查詢字符串。沒有它,新的URL看起來像http://domain.com/catalog/180/?id=1,你不想。

上述規則旨在放置在網站根文件夾的.htaccess中(如果放置在其他地方,可能需要進行一些小的調整),並且將僅匹配/cat/?id=1


如果你想匹配略有不同的查詢字符串URL(例如,額外的參數存在 - 比如一些跟蹤/轉診信息:/cat/?id=1&source=sidebanner),使用這樣的規則:

RewriteCond %{QUERY_STRING} (^|&)id=1(&|$) 
RewriteRule ^cat/$ http://domain.com/catalog/180/? [R=301,L] 

這樣的額外的查詢字符串參數source=sidebanner將在重定向期間被丟棄(因爲? - 請參閱上面的原始解釋)。

+0

我應該在一堆這些規則之間使用[OR]嗎? – Ken

+0

'[OR]'?它只能應用於RewriteCond而不是規則。規則是獨立的並且一個接一個地處理。最好的事情 - 更新你的問題(使用分隔符和添加你的想法 - 規則,你想如何使用它們),我會確認它是否正確(因爲註釋不允許正確的格式)。 – LazyOne