11

我尝试使用 .htaccess 进行 301 重定向。

问题:

/?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,这对我不利。我不需要新网址中的查询字符串-

4

1 回答 1

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

结尾?将阻止附加原始查询参数,除非您也[QSA]再次给出标志。

手册

注意:查询字符串 Pattern 不会与查询字符串匹配。相反,您必须使用带有 %{QUERY_STRING} 变量的 RewriteCond。但是,您可以在包含查询字符串部分的替换字符串中创建 URL。只需在替换字符串中使用问号,即可指示应将以下文本重新注入到查询字符串中。当您想删除现有的查询字符串时,只用问号结束替换字符串。要将新查询字符串与旧查询字符串组合,请使用 [QSA] 标志。

于 2013-03-07T17:00:54.680 回答