我正在尝试用Apache 2.4重写URL。我希望该请求
http://subdomain.domain.com
http://www.subdomain.domain.com
https://www.subdomain.domain.com
重新映射到
https://subdomain.domain.com
为避免SSL通配符证书中的错误与www.subdomain.domain.com不匹配。
我尝试过:
<VirtualHost ip:80>
ServerName subdomain.domain.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost ip:80>
ServerName www.subdomain.domain.com
Redirect permanent / https://subdomain.domain.com
</VirtualHost>
<VirtualHost ip:443>
ServerName www.subdomain.domain.com
Redirect permanent / https://subdomain.domain.com
</VirtualHost>
<VirtualHost ip:443>
ServerName subdomain.domain.com
...
...
...
我的配置适用于(1)和(2),但不适用于(3)。我的错误在哪里?
最佳答案
我认为问题在于您的端口443虚拟主机之一没有启用SSL。
尝试这个
<VirtualHost ip:443>
ServerName www.subdomain.domain.com
Redirect permanent / https://subdomain.domain.com
SSLEngine on
SSLCertificateFile /something
SSLCertificateKeyFile /something
</VirtualHost>
否则,由于该请求已加密,因此根本无法理解该请求。
请参阅例如How to redirect https to http without any SSL Certificate以了解为什么有必要这样做。