我尝试使用.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
,这对我不利。我不需要新网址中的查询字符串 -
答案 0 :(得分:20)
RewriteCond %{QUERY_STRING} view=products&id=12345
RewriteRule .*$ /8831? [L,R=301]
结尾?
将阻止附加原始查询参数,除非您再次提供[QSA]
标记。
来自the manual:
注意:查询字符串 模式将不与查询字符串匹配。相反,您必须使用带有%{QUERY_STRING}变量的RewriteCond。但是,您可以在替换字符串中创建包含查询字符串部分的URL。只需在替换字符串中使用问号,即表示应将以下文本重新注入查询字符串。 如果要删除现有查询字符串,请仅使用问号结束替换字符串。 要将新查询字符串与旧查询字符串组合,请使用[QSA]标志。