如何将HTTPS重定向到HTTP?也就是说,与每个人所教导的(看似)相反.
我在HTTPS上有一台服务器,我为此支付了SSL认证和镜像,我没有并且只是为了紧急情况而保留,所以它不值得获得认证.
在我的客户端桌面上,我有一些快捷方式指向http://production_server
和https://production_server
(两者都有效).但是,我知道如果我的生产服务器出现故障,那么DNS转发就会启动,那些在其快捷方式上有"https"的客户端将会盯着https://mirror_server
(这不起作用)和一个胖胖的Internet Explorer 7红屏不安为我的公司.
不幸的是,我不能只在客户端级别切换它.这些用户非常不懂计算机:并且非常有可能因为看到HTTPS"不安全"错误而感到恐惧(特别是现在Firefox 3和Internet Explorer 7处理它的方式:完全停止,有点谢天谢地,但没有帮助我这里大声笑).
这是很容易 找到 的Apache的解决方案为基于HTTP> HTTPS重定向,但对我的生活,我不能反其道而行之.
想法?
这还没有经过测试,但我认为这应该可以使用mod_rewrite
RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
请记住,一旦收到HTTP请求,Rewrite引擎才会启动 - 这意味着您仍然需要一个证书,以便客户端设置连接以发送请求!
但是,如果备份计算机看起来具有相同的主机名(就客户端而言),那么就没有理由不能使用与主生产计算机相同的证书.
根据ejunker的回答,这是适用于我的解决方案,不是在单个服务器上,而是在云环境中
Options +FollowSymLinks RewriteEngine On RewriteCond %{ENV:HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
对于那些使用.conf
文件的人.
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
如果以上解决方案都不适合您(他们不适合我)这里是我的服务器上的工作:
RewriteCond %{HTTPS} =on RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]