2016-08-16 91 views
0

我開始閱讀有關此頁.htaccess - how to force "www." in a generic way?上的類似主題,該解決方案並非如此,幾乎我正在尋找的。在.htaccess中強制HTTPS和WWW

問題:我需要用戶使用HTTPS和WWW來使我的應用程序正常工作。但是,如果像HTML鏈接上一些點擊:

<a href="https://www.example.com">www.example.com</a> 

用戶將落在我的網站是:

https://www.www.example.com/ 

這是我目前的.htaccess文件。

<IfModule mod_rewrite.c> 

RewriteEngine on 

RewriteCond %{HTTP_HOST} !^www\. 

RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 

RewriteCond %{HTTPS} !=on 

RewriteRule ^/?(.*) https://www.%{SERVER_NAME}/$1 [R=301,L] 

</IfModule> 

有什麼方法來檢測用戶已經進入了WWW還是有讓我期待的結果的最佳實踐?

謝謝。

+0

如果要強制使用HTTPS,你應該使用HSTS了。它確實更安全(例如,它可以防止sslstrip)。仔細閱讀文檔。 – Tom

回答

1

您會收到此行爲,因爲http -> https規則會在目標網址中添加www\.而不檢查網址是否已經以www開頭。

你應該對單個規則,並作爲獎金更換您的兩個規則,避免多次重定向:

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule^https://www.%1%{REQUEST_URI} [R=301,L,NE]