您好我尝试将我的所有顶级域名重定向到另一个域名,这已经有效但我也想强制使用https。使用以下代码,它适用于所有顶级域名,例如“.de”,“。net”等。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
我的问题是我也想强制https为我的主tld => '.com' 之间
嗯,我们在这里:
RewriteEngine On
RewriteCond (http://) !^(www\.)?domain\.com$ [NC]
RewriteRule ^(.*) https://domain.com/$1 [R=301,NE,L]
对于我的坏,这是行不通的。我收到了“太多重定向”错误。我现在的问题是它是代码/重定向还是我的提供商的服务器配置可能还有其他错误?我注意到“Too many redirects”错误以任何方式我直到现在尝试从“http://”重定向到“https://”并尝试了很多不同的方式......
答案 0 :(得分:3)
尝试:
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]