2012-03-15 146 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

相关问题