2009-08-24 17 views
0

我有脚本:如何使用.htaccess通过HTTP和HTTPS将传入请求从domain.com重定向到www.domain.com?

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 

重写规则重定向/老/新

RewriteCond %{REQUEST_URI} ^/old$ 
RewriteRule . /new [L,R=301] 

这将重定向http://example.comhttp://www.example.com,但想这个脚本工作相同的,如果一个用户请求通过HTTPS的URL?我似乎无法在任何地方找到解决方案.... =/

任何人有任何想法?

感谢

+0

您确定您使用HTTPS和HTTPS请求是由相同的虚拟主机处理还是指向相同的目录? – Gumbo 2009-08-24 19:28:15

回答

0

使用此规则:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.example.com%{REQUEST_URI} [L,R=301] 
+0

这不起作用......它似乎没有检测到SSL – mwalsher 2009-08-24 19:22:47

0
RewriteCond %{HTTPS} =on 
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] 
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301] 

RewriteCond %{HTTPS} =off 
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 
+0

这也没有工作......与上述相同的原因: – mwalsher 2009-08-24 19:25:01

1

看来,这并不能在我们这里做....这显然是因为该证书必须首先通过浏览器来接受。如果它不被接受,则由于浏览器的“警告”消息,将不允许重定向。

http://www.webhostingtalk.com/showthread.php?t=885150

+0

HTTP是通过SSL的HTTP。因此SSL连接必须在HTTP请求可以发送,因此,在HTTP重定向发生之前必须接受证书。 – Gumbo 2009-08-24 19:38:31

+0

“我们没有使用已接受的SSL证书”是相关信息,它改变了很多问题 – ceejayoz 2009-08-24 19:53:08

+0

问题的目的是为了缓解没有domain.com证书的问题,并且只能为www.domain.com提供证书 - 但我们现在已经发现,如上所述,这不起作用。 – mwalsher 2009-08-24 22:03:36

0

我有同样的情况,我的证书是为domain.com和不www.domain.com。如果用户输入https://www.domain.com,会发生什么,如果用户坚持继续访问页面,它将转到我们服务器的SSL错误页面。我所做的就是这个标签添加到错误页面的HTML头部分(错误页面的位置取决于在服务器上):

<meta http-equiv="refresh" content="0; url=http://domain.com/" /> 

它将把用户重定向到domain.com。这样做是不可取的,但如果您现在无法承受通配证书,那么它是一个快速的解决方法。

相关问题