我正在尝试获得所有变化
http://www.example.com
http://example.com
https://www.example.com
https://example.com
www.example.com
example.com
全部重定向至
https://www.example.com
我有以下 mod_rewrite 块:
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} ^([a-z.]+)?example.com$ [NC]
RewriteCond %{HTTP_HOST} example.com$ [NC]
RewriteRule .? https://www.example.com%{REQUEST_URI} [R=301,L]
似乎除了一件事之外都做了:
https://example.com
不会被重定向到
https://www.example.com
符合预期
如果我删除该条件:
ReWriteCond %{SERVER_PORT} !^443$
因此它既影响 http 又影响 https,但仍然不能按预期运行。
请问我哪里做错了?谢谢
答案1
您无法使用以下方式进行 SSL 到 SSL 重定向.httaccess
你必须为每个域名使用单独的 VirtualHost 条目(前提是你的 Web 服务器支持信噪比):
<VirtualHost *:443>
ServerName example.com
Redirect 301 / https://www.example.com
SSLCertificateFile /etc/ssl/example.com.crt
SSLCertificateKeyFile /etc/ssl/example.com.key
</VirtualHost>