的.htaccess重定向到HTTPS HTTP不工作

问题描述:

我试图捕捉任何HTTPS流量到我的网站,这样的面前:的.htaccess重定向到HTTPS HTTP不工作

https://www.domain.com 

被重定向到:

http://www.domain.com 

然而,其他子域需要被重新引导到其他地方。除了https - > http重定向之外,大多数情况下这都是可行的。下面是目前我的.htaccess文件:

RewriteEngine On 

RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

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

RewriteCond "%{HTTP_HOST}" !^www.* [NC] 
RewriteCond "%{HTTP_HOST}" ^([^\.]+).*$ 
RewriteRule ^(.*)$ https://secure.domain.com/a/login/%1 [L,R=301] 

这似乎是这个位:

RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

不工作,我会想象。事实上,它似乎根本没有重定向。

在另一个子目录我有效果相反的正常工作:

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

所以我的想法是相反的应该做的工作,但貌似没有。

任何想法的人?

编辑

我想,这可能有一些做的事实,在服务器上有哪个ISP用于提供一个通用的解决HTTPS到您的网站的SSL证书。例如,如果你有一个网站:

http://www.yourdomain.com

您可以通过访问相同的内容/托管帐户通过https:

https://server100.securedomain.com/yourdomain.com

难道是因为当我输入HTTPS到浏览器我被服务的通用证书,因为它不匹配我输入的域名我收到一个安全警告关于一个不可信的证书,这是停止重定向?

EDIT 2

望着服务器头,我认为我与我上面的假设是正确的。服务器正在返回:

The host name in the certificate is invalid or does not match 

这会停止重定向吗?

刚才意识到我从来没有关闭过,所以为了其他人试图解决这个问题的好处,我现在就来。

简而言之,捕获所有我尝试实现的https - > http重定向将不起作用,因为服务器首先提供了证书,然后生成安全警告。出于明显的安全原因,这发生在重定向之前,因此重定向不起作用。

希望能帮助别人。

+0

true ...对于那些没有SSL证书的服务器,需要接受网页上的警告。然后下面的代码将重定向从https到http:
'的RewriteCond%{HTTP_HOST} XYZ \ .co.uk $ [NC]'
\t'的RewriteCond%{HTTPS} on'
\t'重写规则^([^/] +)?$ http://%{HTTP_HOST}/$ 1 [R = 301,L]'
Invincible 2015-05-01 11:21:53

+0

那么有没有办法避免警告屏幕?它不可能强制HTTP始终为所有页面,并避免警告页面? – Robbiegod 2015-11-18 18:24:13

如果“它似乎并没有在所有重定向”我的猜测是,

RewriteCond %{HTTPS} on 

由于某种原因失败。我在一个例子中看到了这个:

RewriteCond %{SERVER_PORT} ^443$ [OR] 
RewriteCond %{HTTPS} =on 

也许你需要两个?

+0

做到这一点谢谢你的回应,但这也不起作用。 – 2010-06-05 16:28:06

我该知道的旧线,但我只是找到了答案,它可以帮助别人的未来:

肯定的是,虚拟主机文件中的SSL服务器:

AllowOverride All 

这很可能在你的默认服务器虚拟主机文件中,这就是为什么你可以从http

+0

这只是简单的解析'.htaccess'文件。它本身没有HTTPS/SSL逻辑。 – 2014-02-17 05:52:57