我已经设置了htaccess,将除www以外的所有子域重定向到https。但是我也希望它忽略http://domain.com - 目前它重定向到https://domain.com,这对我正在做的事情没有好处。
知道重写条件是什么吗?
我试过了:
RewriteCond %{HTTP_HOST} !^domain.com [NC]
RewriteCond %{HTTP_HOST} !^http://domain.com [NC]
但这些都不起作用。
这就是我现在正在使用的内容。
# Redirect subdomains to https
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^domain.com [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
答案 0 :(得分:2)
我认为你的问题是你需要逃避domain.com
中的点,所以domain\.com
。
# Redirect subdomains to https
RewriteCond %{SERVER_PORT} =80
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} !^domain\.com [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
您使用的是301(永久)而不是302,因此您可能在浏览器关闭之前甚至没有尝试向http域发送请求。你应该在测试时使用302并将301放在正确的位置。
答案 1 :(得分:1)
试试这个:
RewriteCond %{HTTPS} =off
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com [NC]
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]