我的虚拟主机文件:
<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 对。