這實際上使用單個RewriteRule
非常簡單(儘管您可以通過添加RewriteCond
來限制基於域的重定向)。
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{HTTP_HOST} (www\.)?example\.com
RewriteRule ^$ http://example.com/all/ [QSA,R=301]
這將做重定向,並應查詢字符串添加到重定向的URL的末尾:
http://www.example.com/?brand=123&color=red
=> http://example.com/all/?brand=123&color=red
http://example.com/?brand=123&color=red&size=colin
=> http://example.com/all/?brand=123&color=red&size=colin
不過請注意,由於我們匹配一個空路徑(^$
在規則),它不會重定向已經在/all
任何要求......或任何其他爲此事:
http://example.com/all/?brand=123 : not redirected
http://example.com/index.php?brand=123 : not redirected
如果你也想,如果請求重定向編輯URL是一個索引文件(我將使用的index.php作爲一個例子),你會做以下幾點:
RewriteCond %{QUERY_STRING} !^$
RewriteCond %{HTTP_HOST} (www\.)?example\.com
RewriteRule ^(index.php)?$ http://example.com/all/ [QSA,R=301]
當然,你應該「example.com」替換用自己的域名哪裏你看到它。
編輯:我已經添加了額外的RewriteCond
,這意味着只有在URL上傳遞查詢字符串時纔會發生重寫。
我用這個:(WWW \)的RewriteCond%{HTTP_HOST}網站\ .COM 重寫規則?^$ http://www.site.com/all-products [QSA,R = 301],它的工作,但是,我不能轉到主頁,因爲它會將我重定向到site.com/all-products –
啊,所以如果有一個query_string('?brand = 123 ...'部分),你只需要重寫?我已經更新了我的答案。 – icabod
完美的作品。謝謝 –