朋友通过托管技术支持对她进行了
.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 集成?
没有条件,它总是重定向。如果不是 HTTPS 或者主机名不正确,它应该重定向。您可以添加第二个条件来处理第二个条件:
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]