Как перенаправить HTTPS на HTTP?


как перенаправить 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 solutions на НТТР->редирект на HTTPS, но для жизни меня я не могу сделать наоборот.

идеи?

9   143   2008-08-12 04:36:32

9 ответов:

Это не было проверено, но я думаю, что это должно работать с помощью mod_rewrite

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

имейте в виду, что механизм перезаписи запускается только после получения HTTP - запроса-что означает, что вам все равно понадобится сертификат, чтобы клиент мог настроить соединение для отправки запроса!

однако если резервная машина будет иметь то же имя хоста (насколько это касается клиента), то не должно быть никаких причин, по которым вы не можете использовать тот же сертификат, что и основная производственная машина.

основываясь на ответе ejunker, это решение работает для меня, а не на одном сервере, а на облако окружающая среда

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

для тех, кто использует .

<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>

Если ни одно из вышеперечисленных решений не работает для вас (они не для меня) вот что работало на моем сервере:

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/ [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, когда вы можете. В вашем случае я бы заменил переписывание на это:

    <If "%{HTTPS} == 'on'" >
            Redirect permanent / http://production_server/
    </If>

The <If> директива доступна только в Apache 2.4+ согласно этому здесь Блог

ни один из ответов не работает для меня на веб-сайте Wordpress, но следующие работы ( это похоже на другие ответы, но немного изменилось)

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

насколько мне известно, простое обновление meta также работает без ошибок:

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">