繁体   English   中英

.htaccess将https重定向到http无效

[英].htaccess redirect https to http not working

我想抓住任何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地址。 例如,如果您有一个站点:

http://www.yourdomain.com

您可以使用以下方式通过https访问相同的内容/主机帐户:

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

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

编辑2

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

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

这会停止重定向吗?

刚刚意识到我从未关闭过这个,所以为了其他任何试图解决这个问题的人的利益,我现在就会这样做。

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

希望能帮助别人。

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

RewriteCond %{HTTPS} on

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

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

也许你需要两个?

我知道这是一个旧线程,但我刚刚找到答案,它可能会帮助将来的某个人:

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

AllowOverride All

这可能在您的默认服务器虚拟主机文件中,这就是您可以从http执行的原因

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM