.htaccess将特定子域从HTTPS重定向回HTTP

时间:2012-05-28 20:09:37

标签: .htaccess

我正在使用.htaccess将所有请求(子域除外)从HTTP重定向到HTTPS。这段代码对我很有用:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !=m.example.com
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

但是,它不会阻止用户手动尝试使用HTTPS访问子域(我所拥有的SSL不包含子域,并且在用于子域时显示信任错误)。

现在,我想知道:

1 - 如何将所有HTTPS请求重定向到子域?

2 - 如何修改此代码以将子域限制动态应用于其他子域(不仅仅是m.example.com)

1 个答案:

答案 0 :(得分:1)

1)如果证书不包含m.example.com,则永远不能发送重定向,因为浏览器将拒绝建立连接。所以没有办法做到这一点。

2)所以你想让htaccess做的就是将裸域重定向到https。要做到这一点,请使用:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

我认为证书还包括www.example.com使用

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}