2013-04-04 127 views
2

我试图将用户重定向到https://www.example.com,www的,当用户试图http://example.comwww.example.comhttps://example.comhttp://www.example.com从HTTP重定向到HTTPS复制

对于我在.htaccess -file使用此代码:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*) https://www.%{SERVER_NAME}/$1 [R,L] 

与此问题是,当在www.example.comhttp://www.example.com用户的类型,该用户将被重定向到https://www.www.example.com。换句话说,它会复制www。

我怎样才能避免这种情况?

+3

那些关闭这个...我明白这_might_被认为是“局部的”,但,我不确定为什么它是'脱离主题'? – Jon 2013-04-15 07:48:50

+2

它不是脱离主题或本地化。顺便说一句,可能会重复*,因为有几十个类似的问题,不关闭。在这种情况下,这只是无意义的,因为它经常发生在这里,很不幸。 – 2013-04-25 08:47:34

回答

2

也许这将工作:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} (?:www\.)?(.*) [NC] 
RewriteRule ^(.*) https://www.%1/$1 [R,L] 
+0

确保'www'永远在那里的好方法。 ^^ – Jon 2013-04-04 22:35:55

+0

工作就像一个魅力! – 2013-04-04 22:36:29

0

您是否尝试过:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

这使用Apache获取主机和不依赖于它的重定向,并且也将使用Apache以及保持请求的URI。 ^^(而无需使用任何居然在RewriteRule匹配)

+0

耶!这摆脱了www重复,但通过时进入该网站。 'http:// example.com'只会被重定向到'https:// example.com'。我需要该域永远是“https:// www.example.com”。感谢您的快速回复,乔恩:-) – 2013-04-04 22:32:49

+0

没问题!对不起,我误解了总是需要'www'的第一部分。 ^^ – Jon 2013-04-04 22:36:38