您有使用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
將在重定向期間被丟棄(因爲?
- 請參閱上面的原始解釋)。
我應該在一堆這些規則之間使用[OR]嗎? – Ken
'[OR]'?它只能應用於RewriteCond而不是規則。規則是獨立的並且一個接一個地處理。最好的事情 - 更新你的問題(使用分隔符和添加你的想法 - 規則,你想如何使用它們),我會確認它是否正確(因爲註釋不允許正確的格式)。 – LazyOne