Apache .htaccess将https重定向到http不工作

Apache .htaccess将https重定向到http不工作,apache,.htaccess,ssl,redirect,Apache,.htaccess,Ssl,Redirect,我正在尝试捕获我网站前端的任何https流量,以便: https://www.domain.com 被重定向到: http://www.domain.com 但是,其他子域需要重定向到其他位置。在大多数情况下,除了https->http重定向之外,这一切都正常工作。这是我目前的.htaccess文件: RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} Re

我正在尝试捕获我网站前端的任何https流量,以便:

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}
所以我的想法正好相反,我本应该做这项工作,但似乎不是

有什么想法吗

编辑

我认为这可能与服务器上有一个ssl证书有关,ISP使用该证书向您的站点提供通用https地址。例如,如果您的网站位于:

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

可能是因为当我在浏览器中键入https时,我收到了通用证书,并且因为它与我输入的域名不匹配,我收到了一个关于不受信任证书的安全警告,该证书正在停止重定向

编辑2

查看服务器头,我认为我的上述假设是正确的。服务器正在返回:

The host name in the certificate is invalid or does not match
这会停止重定向吗?

如果“它似乎根本没有重定向”,我猜是这样的

RewriteCond %{HTTPS} on
由于某种原因失败了。我在一个例子中看到了这一点:

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

也许你们两个都需要?

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

简言之,我试图实现的捕获所有https->http重定向将无法工作,因为服务器首先提供证书,然后证书将生成安全警告。由于明显的安全原因,这种情况发生在重定向之前,因此重定向无法正常工作


希望这对其他人有所帮助。

我知道这是一条古老的线索,但我刚刚找到了答案,它可能会在将来帮助其他人:

确保ssl服务器的虚拟主机文件具有:

AllowOverride All

这可能存在于默认的服务器虚拟主机文件中,这就是为什么您可以从http执行此操作的原因。这只是启用对
.htaccess
文件的解析。它本身没有HTTPS/SSL逻辑。是的。。。对于那些没有ssl证书的服务器,需要接受网页上的警告。然后下面的代码将从https重定向到http:
RewriteCond%{http_HOST}xyz\.co.uk$[NC]

RewriteCond%{https}on

RewriteRule^([^/]+)?$http://%{http_HOST}/$1[R=301,L]

因此没有办法避免警告屏幕?不可能强制所有页面始终使用http并避免出现警告页面?