我正在使用.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)
答案 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}