2013-03-07 24 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]标志。

相关问题