.htaccess 在htaccess中使用查询字符串重写规则重定向URL

ar7v8xwq  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(147)

我没有使用regex的经验,我试图在WordPress站点的.htaccess文件中放置的重定向规则没有效果。
我要重新导向:

https://example.com/example/?person=name

https://example.com/example/people/name

从阅读中,我发现我的规则应该是:

RewriteRule  \?person=(.*) https://example.com/example/people/$1 [R=301,L]

我错过了什么/做错了什么?

c6ubokkw

c6ubokkw1#

从阅读中,我发现我的规则应该是:

RewriteRule  \?person=(.*) https://example.com/example/people/$1 [R=301,L]

无法使用RewriteRulepattern 匹配URL的查询字符串部分。RewriteRulepattern 仅与请求的URL路径匹配。要匹配查询字符串,需要使用条件并检查QUERY_STRING服务器变量。
例如:

RewriteCond %{QUERY_STRING} ^person=([^&]*)
RewriteRule ^example/$ /example/people/%1 [QSD,R=302,L]

这需要在现有的WordPress指令 * 之前 *。
这与您的问题中所述的URL路径完全匹配,即/example/
%1(与$1相对)是对最后一个匹配条件的反向引用,即person URL参数的值,它作为第一个URL参数出现。
QSD(放弃查询字符串)标志(Apache 2.4+)是从目标URL中删除查询字符串所必需的。如果您仍然使用Apache 2.2,则将一个空查询字符串(即,将一个?)附加到 subsitution 字符串的末尾。

相关问题