programing tip

HTTPS를 HTTP로 어떻게 리디렉션합니까?

itbloger 2020. 6. 4. 19:17
반응형

HTTPS를 HTTP로 어떻게 리디렉션합니까?


HTTPS를 HTTP로 어떻게 리디렉션합니까? 즉, 모든 사람들이 가르치는 것과는 정반대입니다.

SSL 인증을 지불 한 HTTPS 서버와 비상 사태에 대비하지 않은 미러가있어 인증을받을 가치가 없습니다.

내 고객의 데스크탑에는 http://production_serverhttps://production_server(둘 다 작동) 을 가리키는 일부 바로 가기가 있습니다. 그러나 프로덕션 서버가 다운되면 DNS 전달이 시작되고 바로 가기에 "https"가있는 클라이언트가 https://mirror_server작동하지 않는 큰 Internet Explorer 7 빨간색 화면을 쳐다보고 있습니다. 우리 회사를 위해서

불행히도, 나는 이것을 클라이언트 수준에서 바꿀 수 없습니다. 이러한 사용자는 컴퓨터를 잘 모르는 사람이며 HTTPS "보안"오류 (특히 Firefox 3 및 Internet Explorer 7에서 요즘 처리하는 방식 : FULL STOP, 고맙지 만 일종의 LOL을 도와주지 않음) 오류가 발생할 가능성이 매우 높습니다.

그것은이다 매우 쉽게 찾을 아파치 솔루션 에 대한 HTTP-> HTTPS 리디렉션을 하지만, 내 인생 내가 반대 할 수 없습니다.

아이디어?


이것은 테스트되지 않았지만 mod_rewrite를 사용하여 작동해야한다고 생각합니다.

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

Rewrite 엔진은 HTTP 요청이 수신 된 후에 만 ​​시작됩니다. 즉, 클라이언트가 요청을 보내도록 연결을 설정하려면 인증서가 여전히 필요합니다.

그러나 백업 시스템이 클라이언트와 관련하여 동일한 호스트 이름을 갖는 것처럼 보이는 경우 기본 프로덕션 시스템과 동일한 인증서를 사용할 수 없습니다.


ejunker의 답변을 바탕으로, 이것은 단일 서버가 아니라 클라우드 환경 에서 나를 위해 일하는 솔루션입니다.

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>

위의 해결책 중 어느 것도 당신을 위해 작동하지 않으면 (그들이 나를 위해하지 않은) 여기 내 서버에서 작동 한 것입니다.

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를 사용하지 않는 것이 좋습니다.

귀하의 경우에는 Rewrite를 다음과 같이 바꾸십시오.

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

<If>지침이 따라 2.4+ 아파치에서만 사용할 수 있습니다 여기 블로그 .


이것은 나를 위해 작동합니다.

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
    Redirect "https://www.example.com/" "http://www.example.com/"
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    # ... 
</VirtualHost>

포트 80과 443을 모두 들어야합니다.


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

참고 URL : https://stackoverflow.com/questions/8371/how-do-you-redirect-https-to-http

반응형