2017-04-10 45 views
1

我已经与多个条件试图在我的所有https的页面重定向http我的SSL证书已过期。由于需要时间来反映这些更改,我想重定向https提供的所有请求,以便通过http调用。重定向到http不工作

试图与这些规则:

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


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


RewriteCond %{HTTP:X-Forwarded-Proto} =https 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

一切似乎是工作。有没有更好的方法来处理这个问题?几乎一无所有 -

+0

的起点实际上会发生什么解决?或者错误?如果您直接输入HTTP网址,您的网站是否可以使用?你清除了浏览器缓存吗? (你可能有一个HTTP以前实施的HTTPS 301 - 这已经被浏览器缓存的硬盘。)您已经实现HSTS?你在使用CDN吗?你有其他指令吗?其他'.htaccess'文件? mod_rewrite启用?启用“.htaccess”? – MrWhite

+0

@ w3dk一切正常,谢谢!发生这种情况是因为规则是在文件开始时应用的。我试图将它们放在文件的末尾,它现在正在工作。 –

回答

0

它通过将规则在文件的结尾,而不是将它们放置在文件

+0

很高兴你解决了。但是,将这些指令在文件的结尾并没有真正意义 - 这些指令应(事实上,我会说“必须”)走在文件的开始。如果相同的指令工作,有它移动到文件的末尾,那么我认为这个问题是“别的东西”(如高速缓存或东西)?如果保留指令在文件的末尾,则极有可能稍后添加任何额外的指令将阻止这种重定向的发生。 – MrWhite

+0

@ w3dk呀,重定向规则后,一些规则必须写上这条规则,并再次重定向URL为https。然而,它在最后时刻帮助我。现在,SSL证书已注册并更新。我现在通过https再次运行该网站:) –