我想将整个网站重定向,包括所有子域名到https。
这会有用吗?
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
答案 0 :(得分:1)
虽然您的代码可能正常运行,但我建议您使用%{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]
答案 1 :(得分:0)
是的,那会有用。
重要的是确保规则之前您可能拥有的任何路由规则,并且没有其他规则重定向到http://
。