2016-03-03 66 views
2
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L] 

我試圖強制所有內容到https並消除www。我知道這已經被反覆討論 - 但我試圖理解爲什麼這個版本 - 特別是 - 不起作用。當我將上面的代碼添加到htaccess時,強制https的效果很好 - 但它不會刪除www。鑑於我在重寫過程中使用的顯式url,這甚至是可能的?我試過刪除緩存,不同的瀏覽器,不同的機器等等。服務器級可以有其他的東西來覆蓋它嗎? TX重定向無法刪除www

+0

「這怎麼可能」 - 您是否暗示即使訪問「http:// www.example.com」(注意HTTP),它仍然不會刪除「www」?如果你訪問'https:// www.example.com'(用'''),那麼因爲你的'RewriteRule'只能在端口80訪問時被處理,所以什麼都不會發生。 – MrWhite

+1

好吧,你碰到它的時候,我沒有意識到80港口的含義 - 在這方面顯而易見 - 因此根據您的期望,您的第一個例子確實奏效 - 但是一旦我看到https工作,我只關注www部分。我感謝你的明確迴應。 – busy1

回答

1

您可以使用此規則做兩件事,即http->httpsremove www

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

請務必保留此規則的第一條規則和清除瀏覽器緩存。

+0

欣賞這一點,我會盡快嘗試並回復... – busy1

+1

雖然w3dk在技術上回答了我的問題,關於爲什麼我的代碼沒有按預期工作,這是我的原始代碼更好的(也是更便攜的)替代方案,運作良好,是我可以投票的唯一答案 - 再次感謝您的幫助 – busy1

相關問題