我想将我的整个网站,包括所有子域重定向到 https。
这行得通吗?
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
我想将我的整个网站,包括所有子域重定向到 https。
这行得通吗?
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
虽然您的代码可能工作正常,但我建议使用%{HTTP_HOST}
而不是%{SERVER_NAME}
. 请理解 2 个变量之间的区别。%{SERVER_NAME}
是在您的 Apache 配置中配置的服务器名称,但后面一个是在 HTTP 请求中实时接收的域名。所以代替你的代码使用这个:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} Off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
为了排除特定子域的上述规则,请使用以下代码:
RewriteCond %{HTTP_HOST} !^sub\.domain\.com$ [NC]
RewriteCond %{HTTPS} Off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
是的,这会奏效。
重要的是确保该规则在您可能拥有的任何路由规则之前http://
,并且没有其他规则重定向到.