我有3条关于.htaccess的规则,它们不能同时使用友好的URL、强制HTTPS和非WWW 友好链接 强制使用“https://” 在URL开头抑制www.

我有3条关于.htaccess的规则,它们不能同时使用友好的URL、强制HTTPS和非WWW 友好链接 强制使用“https://” 在URL开头抑制www.,.htaccess,.htaccess,我正在使用CloudFlare,当我激活all时,它将返回一个循环。您的规则如下: RewriteEngine On RewriteCond %{HTTP_HOST} ^www\. [NC,OR] RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=302,L,NE] R

我正在使用CloudFlare,当我激活all时,它将返回一个循环。

您的规则如下:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=302,L,NE]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ ?url=$1 [L,QSA]

请确保在清除浏览器缓存后对此进行测试。

我需要同时添加这两个缓存吗?现在我改成https,因为之前它已经改成https了。很高兴知道。您可以用
301
替换
302
,使其永久重定向。
RewriteEngine On
RewriteCond %{HTTP:CF-Visitor} !'"scheme":"http"'
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1 [L]
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=302,L,NE]

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ ?url=$1 [L,QSA]