Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess在新网站结构上使用查询字符串重定向_.htaccess_Mod Rewrite - Fatal编程技术网

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

.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路径匹配-这明显排除了查询字

我已经改变了网站的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
),我已更新了答案