Apache-2.2

Apache HTTPS / 非 WWW 重定向

  • March 30, 2019

我想將我的所有網路流量重定向到 https://example.com

到目前為止,除了https:www.example.com 重定向很好

這就是我的虛擬主機配置文件的樣子

<VirtualHost _default_:80>
 DocumentRoot "/opt/bitnami/apache2/htdocs"
 RewriteEngine On
 RewriteCond %{HTTPS} !=on
 RewriteRule ^/(.*) https://example.com/ [R,L]
 RewriteCond %{HTTPS_HOST} ^https://www.example.com [NC]
 RewriteRule ^/(.*) https://example.com/ [R,L]
 <Directory "/opt/bitnami/apache2/htdocs">
 ........

唯一不重定向的網站是

https://www.example.com

我錯過了什麼??

正如 Thomas 提到的,您想使用HTTP_HOST. 此外,您的資訊是多餘的,甚至沒有用。此外,您將埠 80 重定向到 443,這意味著HTTPS無論如何都會關閉(未設置)。要在埠 443 上重定向,您需要在 443 定義中進行重定向。

# http://... to https://...
<VirtualHost _default_:80>
 DocumentRoot "/opt/bitnami/apache2/htdocs"
 RewriteEngine On
 RewriteRule ^/(.*) https://example.com/$1 [R,L]
 ...
</VirtualHost>

# https://www.example.com -> https://example.com
<VirtualHost _default_:443>
 DocumentRoot "/opt/bitnami/apache2/htdocs"
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
 RewriteRule ^/(.*) https://example.com/$1 [R,L]
 ...
</VirtualHost>

此外,您可能想要,$1這樣您在重定向時就不會失去路徑。

正如 Thomas 所提到的,\.這是一個好主意,否則您最終可能會匹配到超出預期的數量(但對於主機來說,這不太可能……)

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