WordPress /htaccess redirect:www一个页面,非www另一个

z9ju0rcb  于 2023-06-21  发布在  WordPress
关注(0)|答案(1)|浏览(120)

我想发送一个特定页面的www流量一个地方,并发送一个特定页面的非www流量到另一个。我可以找到如何为所有页面执行此操作,但我尝试的任何特定于页面的操作都不起作用。我确保将规则放在htaccess中的WordPress块之前。

RewriteRule ^http://www.example.com/help$ http://example.com/contact [R=301,L]
RewriteRule ^http://example.com/help$ http://example.com/buy [R=301,L]
9gm1akwq

9gm1akwq1#

文档明确指出,RewriteRule在请求的URL的 path 上工作,而不是在完整的URL上工作。因此,您需要将该规则与RewriteCond结合使用,以便评估URL的请求 host

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?help/?$ http://example.com/contact [R=301,L]

RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/?help/?$ http://example.com/buy [R=301,L]

这个例子可以在中央http服务器的主机配置(这是实现这些规则的首选位置)中工作,也可以在 distributed 配置文件(“.htaccess”文件)中工作,该文件必须位于http主机的DOCUMENT_ROOT文件夹中。您还需要通过AllowOverride指令在分布式配置文件中启用此类规则。
请参阅文档了解详细信息,这应该始终是您回答问题的第一站。作为典型的开源项目,它具有出色的质量,并提供了很好的示例:
https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond
https://httpd.apache.org/docs/current/mod/core.html#allowoverride
还有一点您的示例使用未加密的http协议。那真的是过去的事了。现在任何官方项目都应该使用加密的https协议。SSL证书是免费的这些天...

相关问题