![在 Apache 中通过 SSL 将非 www 重定向到 www 不起作用](https://linux22.com/image/707895/%E5%9C%A8%20Apache%20%E4%B8%AD%E9%80%9A%E8%BF%87%20SSL%20%E5%B0%86%E9%9D%9E%20www%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20www%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我的虚拟主机文件:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
#Redirect non-https or non-www to https://www...
RewriteEngine On
#NOT TESTING HTTPS REDIRECTION FOR NOW
#RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,NE,R=301]
</VirtualHost>
SSl 的 conf 文件是 letsencrypt 的默认文件。
到目前为止,我的测试结果前 3 个结果符合预期,最后一个结果不符合预期
decimoseptimo@ubuntu-512mb-sfo2-1:~$ curl -I http://example.com
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/
301
答案1
最后两个测试将匹配 443 VirtualHost。您没有在问题中包含这一点,但我们可以假设 443 VirtualHost 中没有匹配的 RewriteCond/Rule 对。