문제

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

SSL 인증을 지불한 HTTPS 서버와 그렇지 않은 미러가 있는데 비상용으로만 보관하므로 인증을 받을 가치가 없습니다.

내 클라이언트의 데스크탑에는 다음을 가리키는 몇 가지 바로가기가 있습니다. http://production_server 그리고 https://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> 지시문은 이에 따라 Apache 2.4+에서만 사용할 수 있습니다. 여기 블로그.

Wordpress 웹 사이트에서는 답변이 작동하지 않지만 다음 작업은 작동합니다(다른 답변과 유사하지만 약간의 변경 사항이 있음)

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

이것은 나에게 효과적입니다.

<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을 모두 수신해야 합니다.

내가 아는 한 간단한 메타 새로 고침도 오류 없이 작동합니다.

<meta http-equiv="refresh" content="0;URL='http://www.yourdomain.com/path'">
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top