Ssl

在apache中通過SSL將非www重定向到www不起作用

  • July 21, 2017

我的虛擬主機文件:

<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 👍

decimoseptimo@ubuntu-512mb-sfo2-1:~$ curl -I http://www.example.com
HTTP/1.1 200 OK

好的👍

decimoseptimo@ubuntu-512mb-sfo2-1:~$ curl -I https://www.example.com
HTTP/1.1 200 OK

好的👍

decimoseptimo@ubuntu-512mb-sfo2-1:~$ curl -I https://example.com
HTTP/1.1 200 OK

好的👎

似乎 www 重定向沒有通過 SSL 發生!不知道為什麼,自上次配置編輯以來,apache 已重新啟動。

有什麼想法嗎?

最後兩個測試將匹配 443 VirtualHost。您沒有將其包含在問題中,但我們可以假設 443 VirtualHost 中沒有匹配的 RewriteCond/Rule 對。

引用自:https://serverfault.com/questions/863558