朋友.htaccess
通过托管技术支持对她进行了更改,使她的网站可以与 Cloudflare CDN 配合使用。
.htaccess
看起来像这样:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
目的是将所有流量重定向到 HTTPS + www。
问题是:
当你http://example.com
重定向到 www 时,就可以了。
但是当您转到https://example.com
www 时,重定向不起作用。
据我了解,这是因为 RewriteCond 。仅当规则不在端口 443(HTTPS 端口)上时,它才使规则起作用。
但这条规则对于 Cloudflare 来说似乎是必要的,因为技术支持将其放入,并且因为没有它,站点将无法加载,看起来它可能会进入某些重定向循环。
我们如何重写该文件以使其在所有情况下都能工作,而不破坏 Cloudflare 集成?
如果没有条件,它总是重定向,这就是支持人员让您添加条件的原因。但是该条件仅处理 HTTP 到 HTTPS。如果主机名不正确,它也应该重定向。您可以添加第二个条件来处理不正确的主机名:
这真太了不起了!非常感谢斯蒂芬的帮助,这解决了问题!
你能就另一件事给我建议吗?在我的旧 htacess 文件中,我使用此规则来删除 .html 的所有 url:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^(.*)$ $1.html [L]
但现在当你从谷歌点击我的网站时,它会添加 .html 回来(它不会在内部链接上执行此操作,只是来自谷歌) - 有没有办法我可以添加此规则回来?我尝试将其插入到新规则下方,但它不再起作用。
谢谢!爱丽丝(伊兰的朋友)