我使用以下代码将我的子域的所有 http 请求重定向到 https。
<VirtualHost *:80>
ServerName subdomain.example.com
Redirect 302 / https://subdomain.example.com
</VirtualHost>
现在我的问题是如何对所有子域执行此操作。
例如 http:subdomain1.example.com 应该转到 https:subdomain1.example.com 而 http:subdomain2.example.com 应该转到 https:subdomain2.example.com
如何为所有子域名执行此操作,而不必为所有子域名创建一个虚拟主机
答案1
我想到的是使用mod_rewrite。
像这样:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)\.example.com$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]
但是,请注意,Apache 建议使用Redirect
虚拟主机配置中的指令来实现这一点。
来自文档何时不使用 mod_rewrite:
对于 http 到 https 重定向的情况,如果您无权访问主服务器配置文件,而必须在 .htaccess 文件中执行此任务,则使用 RewriteRule 会比较合适。