HTTPS对HTTP重定向使用htaccess的(Https to http redirect us

2019-06-18 14:42发布

我试图重定向https://www.example.com到http://www.example.com 。 我尝试在.htaccess文件中下面的代码

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

此代码成功地重定向https://example.com到http://www.example.com 。 然而,当我输入https://www.example.com那么它给了我一个“找不到网页”的错误在浏览器中。

我也曾尝试以下2码没有成功

尝试1

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*):NOSSL$ http://www.example.com/$1 [R=301,L]

尝试2

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

上述两个尝试失败。 有什么建议?

Answer 1:

尝试2是接近完美。 只是修改它稍微:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


Answer 2:

但是,如果你的网站没有安全证书,它是一个共享的主机环境,你不想要得到的“警告”,当通过HTTPS被请求你的网站,你可以不使用它重定向htaccess的。 其原因是,警告消息被触发的请求,甚至经过的htaccess文件之前,所以你要修复它在服务器上。 转到/etc/httpd/conf.d/ssl.conf并注释掉部分关于虚拟服务器443但赔率是,你的托管服务提供商不会给你那么多的控制。 所以,你就必须要么移动到不同的主机或购买SSL只是这样的警告不会触发之前,你的htaccess有机会重定向。



Answer 3:

RewriteEngine On
RewriteCond %{SERVER_PORT} 443
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


Answer 4:

您可以使用以下规则来重定向从HTTPShttp:

 RewriteEngine On


RewriteCond %{HTTPS} ^on$
RewriteRule ^(.*)$ http://example.com/$1 [NC,L,R]

说明:

RewriteCond %{HTTPS} ^on$

检查的HTTPS (请使用由HTTPS)

然后

RewriteRule ^(.*)$ http://example.com/$1 [NC,L,R]

重定向任何请求( https://example.com/foo ) http://example.com/foo 。

  • $ 1是重写规则模式正则表达式的一部分,它包含任何值在(+)抓获,在这种情况下,它抓住了域名后的全REQUEST_URI一切。

  • [NC,L,R]是一个标志位,NC使URI情况下灵敏,可以在请求中使用这两个大写或小写字母。

-l标志告诉服务器停止等待处理其他规则,如果currunt规则已匹配,使用了L位,以避免冲突的规则,当你有更多然后在一个块规则是很重要的。

R标志是用来制造一个外部重定向。



Answer 5:

HTTP和HTTPS之间的区别是,HTTPS请求通过SSL加密的连接发送。 SSL加密的连接必须在浏览器和服务器之间的浏览器发送的HTTP请求之前被建立。

HTTPS请求是在将通过SSL加密连接发送的事实的http请求。 如果服务器拒绝建立SSL加密连接,那么浏览器将没有连接在发送请求。 浏览器和服务器将不相互交谈的方式。 该浏览器将无法发送,它希望访问,服务器将无法使用重定向到另一个网址作出反应的URL。

所以这是不可能的。 如果你想使用https链接响应,那么你就需要一个SSL证书。



Answer 6:

RewriteCond %{HTTP:X-Forwarded-Proto} =https


Answer 7:

你的代码是正确的。 只要把它们里面<VirtualHost *:443>

例:

<VirtualHost *:443>
  SSLEnable

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

</VirtualHost>


文章来源: Https to http redirect using htaccess