2013-03-07 51 views
9

我嘗試使用.htaccess進行301重定向。使用RewriteCond%{QUERY_STRING}而不將查詢字符串附加到新地址

問題:

/?view=products&id=12345 -> /8831 

有舊的和新的地址沒有關係。

出於某種原因

Redirect 301 /?view=products&id=12345 /8831 

不起作用。如果我刪除問號,它的工作原理沒有問號。

我也嘗試:

RewriteCond %{QUERY_STRING} view=products&id=12345 
RewriteRule .*$ /8831 [L,R=301] 

但它重定向我/8831?view=products&id=12345,這是對我不好。我並不需要在新的URL-查詢字符串

回答

18
RewriteCond %{QUERY_STRING} view=products&id=12345 
RewriteRule .*$ /8831? [L,R=301] 

期末?將阻止附加原來的查詢參數,除非您還再次給[QSA]標誌。

the manual

注:查詢字符串 格局將不會對查詢字符串相匹配。相反,您必須使用帶有%{QUERY_STRING}變量的RewriteCond。但是,您可以在替換字符串中創建URL,其中包含查詢字符串部分。只需在替換字符串中使用問號,表示應將以下文本重新注入查詢字符串中。 如果您想擦除現有的查詢字符串,只需使用問號結束替換字符串。要將新的查詢字符串與舊的查詢字符串合併,請使用[QSA]標誌。