在 Apache 中通过 SSL 将非 www 重定向到 www 不起作用

在 Apache 中通过 SSL 将非 www 重定向到 www 不起作用

我的虚拟主机文件:

<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 对。

相关内容