编辑:
Redirect permanent "/" "https://%{HTTP_HOST}/"
实际上在第一次重定向中不起作用。它似乎可以工作,因为我的 CDN 自动将 http 重定向到 https:,而不是因为我的设置。对困惑感到抱歉。
我正在尝试编写 Apache httpd 配置文件以将所有 http 流量重定向到 https,并且还需要将无 www 域重定向到 www。
例如
http://example.com http://www.example.com https://example.com
应该全部重定向到
https://www.example.com
这是我所做的:
<VirtualHost ipaddress:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent "/" "https://%{HTTP_HOST}/"
</VirtualHost>
这部分有效。所有http都重定向到https。请注意,%{HTTP_HOST} 已解析并替换。现在我需要将无 www 重定向到 www
<VirtualHost ipaddress:443>
SSLEngine on
ServerName www.example.com
ServerAlias example.com
<If "%{HTTP_HOST} !~ /www/">
Redirect permanent "/" "https://www.%{HTTP_HOST}/"
</If>
...
</VirtualHost>
当我访问https://example.com
它时,它会重定向,但这次它被重定向到
https://www.%{HTTP_HOST}/
而不是https://www.example.com/
.
现在如果我使用
Redirect permanent "/" "https://www.example.com/"
thenhttps://example.com
将被重定向到https://www.example.com
所以看起来 %{HTTP_HOST} 在第二个 VirtualHost 块中没有被替换。
如何使它正确?