2012-03-15 42 views
3

下面的代碼是一個重定向腳本,可將我網站的訪問者重定向到www.domain.com(如果它們不在其上)他們在domain.com或somesub.domain.com)。我修改了它,將它們重定向到HTTPS或HTTP,具體取決於它們鍵入或鏈接到的鏈接。使用HTTP或HTTPS前綴將* .domain.com重定向到www.domain.com

它正在工作,但我猜測可能有一個更簡單的方法來做到這一點,或有一些改進的餘地。有人可以對此進行檢查/評論嗎?提前謝謝了。

# redirect any HTTP traffic that is not http://www.domain.com/* 
RewriteEngine On 
RewriteCond %{SERVER_PORT} ^80$ 
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L] 

# redirect any HTTPS traffic that is not https://www.domain.com/* 
RewriteEngine On 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L] 

回答

3
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule .* http%1://www.domain.com/$0 [R=301,L] 
+0

謝謝您的回答!你能解釋一下新的第3行和修改後的第4行嗎?我想了解它的功能。 – ArendE 2012-03-16 16:35:19

+1

在https的情況下,'%{HTTPS}'包含'on'。因此,通過在https中添加's',它將匹配'on(s)','%1'將包含's',否則%1將爲空。因此,在第4行中,您可以使用http或http * s *。 – Gerben 2012-03-16 18:08:54

+0

完美的作品,非常感謝你爲這個更好的腳本和有用的信息! – ArendE 2012-03-16 22:53:16

相關問題