.htaccess 将所有 TLD 重定向到另一个 TLD 并强制使用 https



你好,我试图将所有顶级域名重定向到另一个,这已经在工作,但我也想强制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]

相关内容

最新更新