.htaccess在新网站结构上使用查询字符串重定向
我已经改变了网站的URL结构,我想重定向我的用户 需要从以下位置重定向:.htaccess在新网站结构上使用查询字符串重定向,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我已经改变了网站的URL结构,我想重定向我的用户 需要从以下位置重定向: https://example.com/find?q=batman 至 https://example.com/search?query=batman 其中“蝙蝠侠”是搜索短语 对我来说,问题是如何改变 q到查询在之后? 像那样的东西,它不起作用 RewriteRule ^find?q=[^/] /search?query=[^/] [R=302,L] RewriteRule模式仅与URL路径匹配-这明显排除了查询字
https://example.com/find?q=batman
至
https://example.com/search?query=batman
其中“蝙蝠侠”是搜索短语
对我来说,问题是如何改变
q
到查询
在之后?
像那样的东西,它不起作用
RewriteRule ^find?q=[^/] /search?query=[^/] [R=302,L]
RewriteRule
模式仅与URL路径匹配-这明显排除了查询字符串
相反,您需要使用RewriteCond
指令来检查QUERY\u字符串
服务器变量,并捕获q=
之后查询字符串的剩余部分
例如:
RewriteCond %{QUERY_STRING} ^q=(.*)
RewriteRule ^find$ /search?query=%1 [R=302,L]
%1
是对上次匹配模式中捕获的组的反向引用。例如,(.*)
-查询字符串的q
URL参数值和剩余部分
只有在确认302(临时)重定向正常后才将其更改为301(永久),以避免缓存问题。此代码不起作用-它根本不会更改,结果是相同的
https://example.com/find?q=batman
(不重定向)对不起,-代码只是将q
更改为query
,但不要将find
更改为search
。因此,重新设置的URL是https://example.com/find?query=batman
添加绝对路径,解决问题RewriteCond%{QUERY\u STRING}^q=(*)RewriteRule^find$https://example.com/search?query=%1 [R=302,L]
啊,好的,对不起,我的回答是基于您所说的“/search?q=batman
至/search?query=batman
”(未提及find
),我已更新了答案