.htaccess使用新网站结构上的查询字符串重定向

时间:2019-05-21 20:33:12

标签: .htaccess mod-rewrite

我更改了网站URL结构,并希望重定向用户。

需要重定向自:

https://example.com/find?q=batman

收件人

https://example.com/search?query=batman

其中“蝙蝠侠” 是搜索短语

对我来说,问题是如何改变

qquery之后?

类似的东西,它不起作用

RewriteRule ^find?q=[^/] /search?query=[^/] [R=302,L]

1 个答案:

答案 0 :(得分:1)

RewriteRule 模式仅与URL路径匹配-这明显排除了查询字符串。

相反,您需要使用RewriteCond指令来检查QUERY_STRING服务器变量并捕获q=之后的查询字符串的其余部分。

例如:

RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule ^find$ /search?query=%1 [R=302,L]

%1是对最后匹配的 CondPattern 中捕获的组的反向引用。即。 (.*)-q URL参数的值和查询字符串的其余部分。

仅在确认正常工作后,才能将302(临时)重定向更改为301(永久),以避免缓存问题。