繁体   English   中英

在 htaccess 中重写规则写入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM