你好,我试图将所有顶级域名重定向到另一个,这已经在工作,但我也想强制https。使用下面的代码,它可以很好地工作在所有顶级域名,如'.de', '.net'等。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.)?domain.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
我的问题是我也想强制https为我的主域名=> '。com'
好了,我们到了:
RewriteEngine On
RewriteCond (http://) !^(www.)?domain.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
我的错,这是不工作。我得到一个"太多的重定向"错误。我的问题是,现在是代码/重定向还是有其他错误的东西可能与我的提供商的服务器配置?我注意到'太多的重定向'错误在任何方式我尝试直到现在重定向从'http://'到'https://',我尝试了很多不同的方式... .
尝试:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^(www.)?domain.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
添加"或"条件,以便在没有HTTPS或域名不同时进行重定向。
(http://)
不是一个变量,它是一个文字"http://",显然永远不会匹配^(www.)?domain.com$
,这就是为什么这个条件总是为真。
因为你正在使用cloudflare,它在内部路由请求(不是HTTPS),你不能使用%{HTTPS}
变量,你需要查看转发协议:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} !^(www.)?domain.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]