2017-02-09 122 views
1

即使想幾種解決方案後,我試圖迫使HTTPS重定向在我的網站通過下面的配置,該網站的.htaccess文件:的Apache2 - 解決重定向到https

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

然而,它導致太多重定向錯誤。我懷疑這可能是因爲沒有設置HTTPS標記,或者在瀏覽器中指定https時未將端口號切換爲443 - 就像通過PHP輸出端口號,即$ _SERVER ['SERVER_PORT']那樣仍然顯示80.我的.conf文件是根據我所看到的似乎是可靠來源而設置的。

任何有關如何解決這個問題的見解都將不勝感激。

回答

1

Apache基金會建議avoid在可能的情況下使用mod_rewrite來解決這類問題。

您應該改用mod_alias Redirect directive

<VirtualHost *:80> 
ServerName www.example.com 
Redirect "/" "https://www.example.com/" 
</VirtualHost> 

<VirtualHost *:443> 
ServerName www.example.com 
# ... SSL configuration goes here 
</VirtualHost> 

但是,如果你只侷限於爲.htaccess和不能改變的虛擬主機/主配置文件的情況下,你可以這樣做:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
</IfModule>