2017-03-02 34 views
2

我創建了一種將www重定向到非www的方法,並將任何http重定向到https。但是,我想知道是否有一個更優雅和有效的方式來做到這一點。這裏是我的代碼:重定向到非www的最佳方式並同時實施SSL

# Force SSL 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301] 

# Rewrite all http to https 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://{HTTP_HOST}.com/$1 [R=301,L] 

回答

1

可以實施非www和https使用一個重寫規則:

RewriteEngine on 

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

OR的結合和與上述條件允許我們在同一時間處理2種類型的請求1)http www,2)https www和規則總是將它們重定向到ssl非www版本。您可以將R替換爲R = 301以使重定向永久。

+0

謝謝!我試圖執行一個非www。爲了做到這一點,我計算出我將第二個條件更改爲'RewriteCond%{HTTP_HOST}!^ www \。'但是,我不確定第三種情況。我只是保持原樣? – user3092

+0

@ user3092請參閱最新答案 – starkeen

+0

這兩個答案都很有價值。不知道爲什麼編輯,而不是顯示如何同時強制執行www與SSL。修復歷史到救援:-) – sun

相關問題