我更改了网站URL结构,并希望重定向用户。
需要重定向自:
https://example.com/find?q=batman
收件人
https://example.com/search?query=batman
其中“蝙蝠侠” 是搜索短语。
对我来说,问题是如何改变
q
至query
之后?
类似的东西,它不起作用
RewriteRule ^find?q=[^/] /search?query=[^/] [R=302,L]
答案 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(永久),以避免缓存问题。