我目前正在使用 mod_rewrite 将所有子域名重定向到 https,但多个来源建议
使用 mod_rewrite 来做这件事并不是推荐的行为。请参阅 重定向SSL
这Apache 文档建议 Redirect 和 RedirectMatch:
RewriteRule 的一个常见用途是重定向一整类 URL。例如,/one 目录中的所有 URL 都必须重定向到 http://one.example.com/,或者也许所有 http 请求都必须重定向到 https。
这些情况最好由 Redirect 指令处理。请记住,Redirect 会保留路径信息。也就是说,URL /one 的重定向也会重定向该 URL 下的所有 URL,例如 /one/two.html 和 /one/three/four.html。
不幸的是,这两个文档(以及我发现的其他任何文档)都只考虑匹配单个域,而不是所有子域。 RedirectMatch 似乎是这类相对简单任务的不错选择,但我似乎无法让“http”按预期进行匹配:
RedirectMatch permanent "^http://(.*)$" "https://$1"
我猜测这不起作用的原因是,redirectMatch 正在寻找路径而不是 URI,但此时我陷入了困境。是否有可能在不使用 mod_rewrite 的情况下将所有子域重定向到 https,或者这是最好的可用方法?
答案1
通常,对于不同 VHost 的子域,我会在每个子域中附加以下行。
Redirect permanent / https://bar.example.com/
我通常只为每个子域名添加一个。如果您有大量子域名,这种方法可能不太可扩展,但它很简单,可以完成工作。