我想确保我的子域名上的所有 URL 都使用 HTTPS。
对于我的主要域名,我使用这个并且运行良好:
<VirtualHost *:80>
DocumentRoot /var/www/html/
ServerName example.io
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
但是,如果我对我的子域名尝试如下操作:
<VirtualHost *:80>
ServerName demo.example.io
DocumentRoot /var/www/html/demo
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
我被重定向到我的主网站(即子域名被剥离),因此 demo.example.io 变成了 example.io。有人知道这里发生了什么吗?
更新:
我从 httpd.conf 中删除了重定向,并将规则放入了 .htaccess 文件中。
现在有这个:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}? [R=301,L]
此重定向http://example.com到https://example.com但它会重定向http://demo.example.com到https://demo.example.comdemo(子域名位于 URL 末尾)。
这有助于指出问题吗?