将整个 VHost 重定向到同一域上的 HTTPS

将整个 VHost 重定向到同一域上的 HTTPS

我有一个虚拟主机,它接受来自 4 个顶级域名的所有域和子域,例如、example.com等。example.orgthree.example.co.uk

我希望整个 VHost 重定向到与请求完全相同的 URL,但使用 HTTPS。

我知道这个:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.all *.other *.domains
    Redirect permanent / https://example.com/
</VirtualHost>

但这对于子域名不起作用,因为有明确的目标 URL。

在 nginx 中这非常简单:

return 301 https://$host$request_uri;

所以我认为 Apache 会有这个问题,而且它确实有这个问题,但是这不起作用(没有 Apache 错误,只是重定向错误):

Redirect permanent / https://%{HTTP_HOST}/

有没有办法使用域/主机变量?不使用可获得加分RewriteRule

答案1

回答Apache SSL 新域名重定向已经足够好了。(输入问题时没看到这个。)

解决方案:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias *.example.com etc
    RewriteEngine on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

在目标 URL 中使用%{HTTP_HOST}似乎可以很好地与 Apache 2.4 配合使用。

有没有不用重写的方法,像 nginx 那样?或者不值得?

相关内容