[英]RewriteRule writing in htaccess
我没有使用正则表达式的经验,并且我试图将重定向规则放入.htaccess
文件中以用于 WordPress 站点没有任何效果。
我想重定向:
https://example.com/example/?person=name
到
https://example.com/example/people/name
从阅读中,我认为我的规则应该是:
RewriteRule \?person=(.*) https://example.com/example/people/$1 [R=301,L]
我错过了什么/做错了什么?
从阅读中,我认为我的规则应该是:
RewriteRule \\?person=(.*) https://example.com/example/people/$1 [R=301,L]
您无法使用RewriteRule
模式匹配 URL 的查询字符串部分。 RewriteRule
模式仅与请求的 URL 路径匹配。 要匹配查询字符串,您需要使用条件并检查QUERY_STRING
服务器变量。
例如:
RewriteCond %{QUERY_STRING} ^person=([^&]*)
RewriteRule ^example/$ /example/people/%1 [QSD,R=302,L]
这需要在现有的 WordPress 指令之前进行。
这与您的问题中所述的 URL 路径完全匹配,即。 /example/
。
%1
(与$1
相反)是对最后一个匹配条件的反向引用,即。 person
URL 参数的值,它作为第一个 URL 参数出现。
从目标 URL 中删除查询字符串需要QSD
(查询字符串丢弃)标志(Apache 2.4+)。 如果你仍然在Apache 2.2然后附加一个空的查询字符串(即附加一个?
)到subsitution字符串,而不是结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.