2

我想将我的整个网站,包括所有子域重定向到 https。

这行得通吗?

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
4

2 回答 2

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]
于 2013-07-15T04:46:36.773 回答
0

是的,这会奏效。

重要的是确保该规则在您可能拥有的任何路由规则之前http://,并且没有其他规则重定向到.

于 2013-07-15T03:38:36.420 回答