如何将HTTPSredirect到HTTP?
如何将HTTPSredirect到HTTP? 也就是说,每个人都教(什么)的相反。
我有一个HTTPS服务器,我已经为此支付了一个SSL证书,并且我没有为这个镜像服务,只是为了应付紧急情况,所以它不值得获得authentication。
在我的客户端的桌面上,我有一些快捷方式指向http://production_server
和https://production_server
(都可以)。 但是,我知道如果我的生产服务器出现故障,那么DNS转发就会启动,那些在其快捷方式上有“https”的客户端将会盯着https://mirror_server
(不起作用)和一个胖胖的Internet Explorer我的公司7不安的红色屏幕。
不幸的是,我不能在客户端切换。 这些用户是非常计算机文盲:很可能会看到HTTPS“不安全”的错误(尤其是火狐3和Internet Explorer 7现在处理它的方式:全停止,谢天谢地,但不帮我在这里大声笑)。
为http-> httpsredirect 寻找 Apache解决scheme 非常容易 ,但是对于我来说,我不能做相反的事情。
想法?
这没有经过testing,但我认为这应该使用mod_rewrite工作
RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
请记住,一旦接收到HTTP请求,Rewrite引擎就会启动 – 这意味着您仍然需要证书,以便客户端build立连接以发送请求!
但是,如果备份计算机似乎具有相同的主机名(就客户端而言),那么应该没有理由不能使用与主生产计算机相同的证书。
基于ejunker的回答,这是为我工作的解决scheme,不是在单个服务器上,而是在云环境中
Options +FollowSymLinks RewriteEngine On RewriteCond %{ENV:HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
对于那些使用.conf
文件。
<VirtualHost *:443> ServerName domain.com RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} SSLEngine on SSLCertificateFile /etc/apache2/ssl/domain.crt SSLCertificateKeyFile /etc/apache2/ssl/domain.key SSLCACertificateFile /etc/apache2/ssl/domain.crt </VirtualHost>
如果上面的解决scheme都不适合你(他们不适合我),这是什么在我的服务器上工作:
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
以上所有都不起作用,当我使用cloudflare,这一个为我工作:
RewriteCond %{HTTP:X-Forwarded-Proto} =https RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
而这一个绝对没有代理人的方式:
RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
如果可以的话,最好使用mod_rewrite。 在你的情况下,我会用这个replace重写:
<If "%{HTTPS} == 'on'" > Redirect permanent / http://production_server/ </If>
在这里, <If>
指令仅在Apache 2.4+中可用
没有一个答案适用于我在WordPress的网站上,但下面的作品(这是类似的其他答案,但有一点变化)
RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
据我所知的一个简单的元刷新也工作,而不会造成错误:
<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">