我有一个虚拟主机,它接受来自 4 个顶级域名的所有域和子域,例如、example.com
等。example.org
three.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 那样?或者不值得?