모든 HTTP 요청을 HTTPS로 리디렉션하는 방법


294

내 사이트의 모든 안전하지 않은 HTTP 요청 (예 http://www.example.com:)을 HTTPS ( https://www.example.com) 로 리디렉션하려고합니다 . PHP btw를 사용하고 있습니다. .htaccess에서이 작업을 수행 할 수 있습니까?


1
httpdPHP가 아닌을 통해이 작업을 수행 할 수 있습니다 .
꾸준히

2
@jnpcl은 httpd 솔루션이 PHP 기반 솔루션보다 낫다는 데 동의하지만 일반적으로 체계적인 리디렉션이 좋은 방법이라고 생각하지 않습니다. 사용자를 항상 HTTPS로 리디렉션하려면 "엔트리 지점"(사이트의 첫 번째 링크)에서 사용자를 보내십시오. 반쯤 진행하지 마십시오. 보호됩니다 (순간 리디렉션이 눈에 띄지 않는 경우).
Bruno

@Bruno : 나는 중복 된 HTTP 요청, 손실 쿼리 문자열에 대한 가능성의 라인을 따라 더 생각하고, 사용자의 가능성을 수동으로 입력http://
꾸준히

@jnpcl 정말 좋은 지적입니다. 사람들은 사이트의 보안을 개선하기 위해 이러한 종류의 리디렉션을 요청하는 경향이 있지만 실제로는 실제로 개선하지는 않습니다 (일반적인 HTTP를 먼저 통과하라는 동일한 요청을 막지 않기 때문에) .
브루노

8
@outis : 게시 한 첫 번째 링크 가이 질문입니다.
메이

답변:


305

업데이트 : 이 답변은 몇 년 전에 받아 들여졌지만 이제는 Apache 설명서 에서이 방법을 권장하지 않습니다 . 사용Redirect대신 . 이 답변을 참조하십시오 .


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

24
@Cat, 내가 대답 / 의견에서 말했듯이 "모든 안전하지 않은 HTTP [...]를 HTTPS로 리디렉션"하려고하면이 방법으로 해당 요청을 안전하게 만들 수 없으며 브라우저에서 브라우저를 만들 수 있습니다. 두 번, 한 번 안전하지 않은 및 한 번 안전합니다.
브루노

13
당신이 정말로해야 할 일은 이것과 함께 HSTS 를 사용하는 것입니다 .
Reese Moore

3
이것은 내 아파치 버전 (Centos 7에 패키지 된 2.4.6)의 버그 일 수 있지만 특정 URL에서 문제가 있습니다. 예를 들어 "@"기호로 http://server/foo?email=someone%40example.com리디렉션 https://server/foo?email=someone%2540example.com하면 URL이 두 번 인용 됩니다 . @ ssc의 답변에 메소드를 사용하면이 문제가 없습니다.
psmears

2
잘못된 답변. 하위 폴더의 URL이 아닌 기본 URL 만 리디렉션합니다. RewriteRule (. *) https : // % {HTTP_HOST} % {REQUEST_URI} [R = 301, L]은 정답입니다.
FredTheWebGuy

7
그들은 반드시 그것에 대해 권장하지 않습니다 :In the case of the http-to-https redirection, the use of RewriteRule would be appropriate if you don't have access to the main server configuration file, and are obliged to perform this task in a .htaccess file instead.
Adam

338

아파치 문서는 재 작성을 사용하여에 추천 :

httpURL 을로 리디렉션하려면 https다음을 수행하십시오.

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

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

이 조각은, 주요 서버 구성 파일에 가야 하지.htaccess질문에 질문한다.

이 기사는 질문을하고 대답 한 후에 만 ​​올 수 있지만 현재 진행중인 방법 인 것 같습니다.


11
이것이 현재 답변이되어야합니다. 그러나 "SSL 구성"에서 정확히 무엇을합니까? 전체 예제가 실제로 도움이 될 것입니다.
Ben

6
@Ben : 그것은 온라인상에서 광범위하게 문서화 된 다른 질문입니다; 우연히, 어제 거의 완전한 예제를 추가했습니다. serverfault.com/q/597012/26210-SSL 구성에 어떤 영향이 있는지에 대한 아이디어를 줄 수 있습니다
ssc

46
이것은 좋은 힌트입니다. 그러나 아파치 문서 에서 언급했다 : "http-to-https 리디렉션의 경우, 주 서버 구성 파일에 액세스 할 수없고이 작업을 수행해야하는 경우 RewriteRule을 사용하는 것이 적절할 것입니다 대신 .htaccess 파일 " 저에게 어떤 경우가 있습니다
peter_the_oak

4
@ user1844933 permanent키워드 를 사용하면 효과는 동일합니다 (브라우저는 301 리디렉션을 수신함). 예 :Redirect permanent "/" "https://example.com"
BeetleJuice

2
@Whitecat에서 CentOS의 6 파일은 /etc/httpd/conf/httpd.conf 파일에 있습니다
dstonek

141

301 리디렉션을 권장합니다.

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

7
고마워, 이것은 나를 위해 일하고, 받아 들여진 대답은 .... 아마도 부족으로 인해[L]
billynoah

1
네. 이것은 또한 하위 폴더에있는 모든 URL을 라우팅하기 때문에 정답입니다.
FredTheWebGuy

이것이 htaccess 파일의 최상위에 있습니까?
CodyBugstein

1
@CodyBugstein 그것이 내가 항상 배치하는 곳이며 항상 작동합니다.
Daan van den Bergh

3
모든 답변에는 한 가지가 없습니다. 모든 페이지를 https로 리디렉션하려면 리디렉션하기위한 코드를 .htaccess 파일의 시작 부분에 바로 배치해야합니다.
Vadim Anisimov

35

이 질문 에서 말했듯 보안에 대한 잘못된 인상을 줄 수 있으므로 모든 HTTP 요청을 해당 HTTPS로 맹목적으로 리디렉션하지 않는 것이 좋습니다. 대신 HTTP 사이트의 "루트"를 HTTPS 사이트의 루트로 리디렉션하고 거기에서 HTTPS로만 연결해야합니다.

문제는 HTTPS 사이트의 일부 링크 또는 양식으로 인해 클라이언트가 HTTP 사이트로 요청을 보내면 리디렉션 전에 컨텐츠가 표시된다는 것입니다.

예를 들어, HTTPS를 통해 제공되는 페이지 중 하나 <form action="http://example.com/doSomething">에 명확하게 보내지 말아야 할 일부 데이터를 전송 하는 양식이있는 경우 브라우저는 먼저 전체 요청 (엔터티, POST 인 경우)을 HTTP 사이트로 보냅니다. 먼저. 리디렉션은 브라우저로 즉시 전송되며 많은 사용자가 경고를 비활성화하거나 무시하므로 무시 될 수 있습니다.

물론, HTTPS 사이트로 연결되어야하지만 HTTP 사이트에 대한 링크를 제공하는 실수는 HTTPS 사이트와 동일한 IP 주소의 HTTP 포트에서 무언가 수신 대기하는 즉시 문제를 일으킬 수 있습니다. 그러나 두 사이트를 "미러"로 유지하면 사용자가 HTTPS로 리디렉션하여 자동으로 수정한다고 가정하는 경향이있을 수 있지만 실수는 너무 늦기 때문에 실수 할 가능성이 높아질 뿐이라고 생각합니다. ( 이 질문 에서 비슷한 토론이있었습니다 . )


1
전체 사이트를 HTTPS로 제공하기로 결정한 경우 이러한 종류의 리디렉션이 적합합니다. 방문 페이지에 http를 지정했기 때문에 403을 원하지 않습니다. 누군가 링크에 http를 지정하고 나쁜 프로덕션에 배포하면 동의합니다. 리다이렉션이 설정되어 있어도 테스트 중에 포착해야합니다. 이 "could"는 경로 재 지정없이 발생할 수 있기 때문에 "could"인수가 마음에 들지 않습니다. 보안 브라우저에서 테스트 할 때 증상이 동일합니다. 단, 403을 수신하지 않고 리디렉션을 분명하게 보내면 확인됩니다.
Derek Litz

예, 누군가가 실수로 http를 양식 작업에 넣는 경우 열심히 실패하는 이점이 있지만 입력 한 URL에 관대 한 것이 대부분의 경우 더 중요합니다.
Daniel Lubarov

4
@Daniel, 나는 사용자가 URL을 입력 할 때 관대하게하는 것이 유용하다는 데 동의합니다. 개발 / 테스트 중에이 기능을 끄는 것이 좋지만 프로덕션 (또는 개발 / 테스트의 마지막 단계)에서 켜는 것이 더 좋은 경우 중 하나라고 말하고 싶습니다.
Bruno

dns에서 http를 https하지 않는 이유는 무엇입니까?
Muhammad Umer

1
@MuhammadUmer는 DNS와 관련이 없기 때문입니다. 일반적으로 동일한 호스트 이름을 사용하지만 호스트 이름이 다른 경우에도 프로토콜과 포트를 변경해야합니다.
Bruno

18

도메인에서 https와 www를 사용하는 가장 좋은 방법은

RewriteCond %{HTTPS} off 
RewriteCond %{HTTPS_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

http://www.example.com/...두 조건이 암시 적으로 AND되기 때문에 리디렉션되지 않습니다 . 대신 OR로 작성해야합니다. OR첫 번째 조건에 플래그를 포함하십시오 (정규 표현식의 리터럴 점을 피하십시오). 그러나 HSTS 를 구현 하는 경우 단일 리디렉션으로 HTTPS 및 www로 리디렉션하지 않으려면 먼저 HTTPS로 리디렉션해야합니다 .
MrWhite

이 텍스트를 어디에 넣습니까?
Aaron Franke

비슷한 유형의 질문에. 누구든지 아래 질문에 도움을 줄 수 있습니까? stackoverflow.com/questions/59503217/…
appsntech

14

이것이 작동하지만 가장 좋지 않은 HTML 리디렉션 접근 방식입니다.

 <meta http-equiv="Refresh" content="0;URL=https://www.example.com" />

PHP 접근

<?php
function redirectTohttps() {
    if ($_SERVER['HTTPS']!="on") {
        $redirect= "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        header("Location:$redirect"); 
    } 
}
?>

.htaccess 접근

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

에서 복사 : www.letuslook.org


어디로 .htaccess갑니까? 또한 해당 링크가 작동하지 않습니다.
Aaron Franke

8

http에서 https로 리디렉션하는이 방법이 마음에 듭니다. 각 사이트마다 편집 할 필요가 없기 때문입니다.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

이 텍스트를 어디에 넣습니까?
Aaron Franke

6

.htaccess 파일에서 다음 코드를 사용하면 방문자가 사이트의 HTTPS 버전으로 자동 리디렉션됩니다.

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

기존 .htaccess 파일이있는 경우 :

RewriteEngine On을 복제하지 마십시오.

RewriteCond 및 RewriteRule로 시작하는 행이 이미 존재하는 RewriteEngine On 바로 뒤에 오도록하십시오.


L과 R은 무엇을 의미합니까?
Aaron Franke

5

GoDaddy.com에 따라 .htaccess를 사용하여 HTTP를 HTTPS로 리디렉션하는 올바른 방법입니다. 첫 번째 코드 줄은 자명하다. 두 번째 코드 줄은 HTTPS가 꺼져 있는지 확인하고, 그렇다면 세 번째 코드 줄을 실행하여 HTTP를 HTTPS로 리디렉션합니다. 그렇지 않으면 세 번째 코드 줄이 무시됩니다.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

https://www.godaddy.com/help/redirect-http-to-https-automatically-8828


5

최상의 솔루션은 요구 사항에 따라 다릅니다. 다음은 일부 컨텍스트가 추가 된 이전에 게시 된 답변의 요약입니다.

Apache 웹 서버로 작업하고 구성을 변경할 수있는 경우 Apache 설명서를 따르십시오 .

<VirtualHost *:80>
    ServerName www.example.com
    Redirect "/" "https://www.example.com/"
</VirtualHost>

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

그러나 .htaccess파일로 할 수 있는지 물었습니다 . 이 경우 Apache의 RewriteEngine을 사용할 수 있습니다 .

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

모든 것이 제대로 작동하고 브라우저가이 리디렉션을 기억하게하려면 마지막 줄을 다음과 같이 변경하여 영구적으로 선언 할 수 있습니다.

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

그러나이 경로 재 지정에 대한 생각이 바뀔 경우주의하십시오. 브라우저는이를 오랫동안 기억하며 변경 여부를 확인하지 않습니다.

RewriteEngine On웹 서버 구성에 따라 첫 번째 줄이 필요하지 않을 수 있습니다 .

PHP 솔루션을 찾는다면 $ _SERVER 배열헤더 함수를보십시오 :

if (!$_SERVER['HTTPS']) {
    header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
} 

Apache 문서는 Rewrite 경로를 권장하지 않는 것 같습니다. 리디렉션은 어떻습니까? 다른 .htaccess파일 로 갈 수있는 것은 무엇입니까 ?
Aaron Franke

예, 리디렉션이 선호되며 .htaccess에서 사용할 수 있습니다. 그러나 http 트래픽을 https로만 리디렉션하는 조건을 추가 할 수 없습니다. https뿐만 아니라 무한 리디렉션 루프도 리디렉션합니다. 위의 http (포트 80)에 사용되는 VirtualHost 지시문에 나열했습니다. .htaccess는 해당 지시문을 지원하지 않으므로 여기에서 리디렉션을 사용할 수 없습니다.
maikel

4

다음 코드를 .htaccess 파일에 추가하십시오.

Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://[your domain name]%{REQUEST_URI} [R,L]

여기서 [도메인 이름]은 웹 사이트의 도메인 이름입니다.

위 코드의 마지막 줄을 다음과 같이 바꾸어 도메인 이름에서 특정 폴더를 리디렉션 할 수도 있습니다.

RewriteRule ^ https://[your domain name]/[directory name]%{REQUEST_URI} [R,L]

L과 R은 무엇을 의미합니까?
Aaron Franke

4

리디렉션에 대해 위에서 설명한 모든 작업을 수행하십시오. 헤더에 "HTTP Strict Transport Security"를 추가하십시오. 이것은 중간 공격에 사람을 피할 것입니다.

아파치 구성 파일 (예 : /etc/apache2/sites-enabled/website.conf 및 /etc/apache2/httpd.conf)을 편집하고 VirtualHost에 다음을 추가하십시오.

# Optionally load the headers module:
LoadModule headers_module modules/mod_headers.so

<VirtualHost 67.89.123.45:443>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security


2

모든 http요청 을로 리디렉션하려면 https다음을 사용하십시오.

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

mod-rewrite가 활성화되어 있지 않고 Apache 2.4에있는 경우, Redirect내부 if지시문을 사용하여 http요청을 로 리디렉션 할 수도 있습니다 https.

아파치 2.4.

<if "%{HTTPS} !~ /on/">
Redirect / https://www.example.com/
</if>

2

많은 호스팅 플랫폼이 여전히 이런 방식으로 제한되어있는 사이트의 아파치 구성에 직접 액세스 할 수없는 상황이라면 실제로 2 단계 접근법을 권장합니다. Apache가 HTTP에서 HTTPS에 대한 mod_rewrite를 통해 가장 먼저 구성 옵션을 사용해야한다고 문서화하는 이유.

먼저 위에서 언급했듯이 .htaccess mod_rewrite 규칙을 설정합니다.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

그런 다음 PHP 파일에서 (상황에 따라 적절한 위치 에서이 작업을 수행해야 할 수도 있습니다. 일부 사이트는 단일 PHP 파일을 통해 모든 요청을 퍼널 리며, 다른 사이트는 필요와 요청에 따라 다양한 페이지를 제공합니다. ) :

<?php if ($_SERVER['HTTPS'] != 'on') { exit(1); } ?>

위의 내용은 보안되지 않은 환경에서 보안 데이터를 노출시킬 수있는 코드보다 먼저 실행해야합니다. 따라서 사이트는 HTACCESS 및 mod_rewrite를 통한 자동 리디렉션을 사용하는 반면 스크립트는 HTTPS를 통해 액세스하지 않으면 출력이 제공되지 않도록합니다.

대부분의 사람들은 이런 생각을하지 않는 것 같습니다. 따라서 Apache는 가능한 경우이 방법을 사용하지 않는 것이 좋습니다. 그러나 사용자의 데이터가 안전한지 확인하기 위해 개발 엔드를 추가로 확인하면됩니다. 이 방법은 호스팅 서비스의 제한으로 인해 권장되지 않는 방법을 사용해야하는 다른 사람에게 도움이되기를 바랍니다.


1

.htaccess를 통해 도움이됩니다.

RewriteEngine On


RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

또한 자세한 내용은 이것을 참조하십시오. Http를 Https로 리디렉션하는 방법?


1
이것은 "너무 많은 리디렉션 오류"가 발생하여 allowOverride 속성을 변경할 수없는 사용자를위한 솔루션입니다.
Evochrome

1

다른 것들에 대해 mod_rewrite가 필요하지 않으면 Apache 핵심 IF 지시문을 사용하는 것이 더 깨끗하고 빠릅니다.

<If "%{HTTPS} == 'off'">
Redirect permanent / https://yoursite.com/
</If>

www 접두사가없는 단일 표준 도메인을 보장하는 등 IF 지시문에 조건을 추가 할 수 있습니다.

<If "req('Host') != 'myonetruesite.com' || %{HTTPS} == 'off'">
Redirect permanent / https://myonetruesite.com/
</If>

모든 것에 대해 mod_rewrite를 사용하는 데 익숙한 관성이 많이 있지만 이것이 효과가 있는지 확인하십시오.

더 많은 정보: https://httpd.apache.org/docs/2.4/mod/core.html#if

작동 상태를 보려면 (www. 또는 https : //없이 또는 .com 대신 .net으로 시도) https://nohodental.com/ (작업중인 사이트).


1

이 코드를 .htaccess 파일로 가져 오십시오. HTTP를 HTTPS로 자동 리디렉션

RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


안녕, 답변 주셔서 감사합니다, 당신의 답변은 다른 기존 답변이없는 무엇을 추가합니까?
Gricey

비슷한 유형의 질문에. 누구든지 아래 질문에 도움을 줄 수 있습니까? stackoverflow.com/questions/59503217/…
appsntech

0

내 사이트의 모든 페이지를 http에서 https의 페이지 아날로그로 리디렉션하는 방법을 찾았습니다.

RewriteEngine On 
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

0
 Redirect 301 / https://example.com/

(위의 답변 중 어느 것도 효과가 없을 때 나를 위해 일했습니다)

보너스:

ServerAlias www.example.com example.com

(고정 된 https : // www .example.com을 찾을 수 없음)


0

모든 URL을 https 및 www로 리디렉션합니다.

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTPS_HOST} !^www.example.com$ [NC,OR]
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

0

Tomcat 서버에서 수행하려면 아래 단계를 따르십시오.

독립형 Apache Tomcat (8.5.x) HTTP 서버에서 사용자가 www.domain.com을 입력하면 https (www.domain.com) 사이트로 자동 전달되도록 구성하는 방법

닫기 태그 전에 [Tomcat_base] /conf/web.xml에 다음을 포함시키는 2 단계 방법

step 1: 
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

[Tomcat_base] /conf/server.xml 커넥터 설정을 설정하십시오.

step 2:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="[keystorelocation]" type="RSA" />
</SSLHostConfig>
</Connector>

참고 : 이미 https 구성을 수행하고 경로 재 지정을 시도한 경우 1 단계 만 수행하십시오.



-1

이 문제와 다른 점은로드 밸런서가 작동 할 때입니다.

상황은 다음과 같습니다.-브라우저에서로드 밸런서로의 트래픽은 HTTPS입니다.-로드 밸런서와 실제 WebServer 간의 트래픽은 HTTP입니다.

따라서 PHP 또는 Apache의 모든 서버 요청 변수는 연결이 단지 HTTP임을 보여줍니다. 서버의 HTTP 및 HTTPS 디렉토리는 동일합니다.

승인 된 답변의 RewriteCondition이 작동하지 않습니다. 루프를 제공하거나 작동하지 않습니다.

질문은로드 밸런서에서이 작업을 수행하는 방법입니다.

(또는로드 밸런서가 잘못 구성되어 있습니다. 웹 호스팅 회사로 문제를 옮길 수 있기 때문에 기대하고있는 것입니다 :-))


리디렉션은 대신로드 밸런서에서 발생해야합니다. 로드 밸런서의 유형에 따라 이는 구성에서 가능해야합니다. 또는 허용 된 응답이 작동하는 아파치 인스턴스 자체입니다. 단일 노드에서는하지 마십시오.
marc82ch

-1

https 트래픽을 수락하고 http를 사용하여 서버로 라우팅하는 Amazon Web Services Elastic Load Balancer를 사용하는 경우 모든 http 트래픽을 https로 리디렉션하는 올바른 방법은 https://aws.amazon에 설명되어 있습니다 . com / premiumsupport / knowledge-center / redirect-http-https-elb

여기에 설명 된대로로드 밸런서의 http 요청에 항상 포함 된 X-Forwarded-Proto 헤더 (http 또는 https 포함)를 사용하십시오. https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-에 forwarded-headers.html

httpd.conf 파일에서 :

<VirtualHost *:80>

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

</VirtualHost>

또는 루트 .htaccess 파일에서 :

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

보너스 : 로컬 개발 시스템에서 http 트래픽을 리디렉션하려고 시도하지 않습니다.


-1

그것은 나를 위해 작동합니다 :

<IfModule mod_rewrite.c>
 RewriteEngine On
  RewriteCond %{HTTPS} !on
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

예를 들어 http : // server / foo? email = someone % 40example.com 은 문제없이 정상적으로 리디렉션됩니다. 웹 사이트 루트 폴더에있는 .htaccess 파일 (예 : public_html) 사용할 수 있습니다 한다 RewriteCond % {SERVER_PORT을}! ^ 443 $ 대신 한다 RewriteCond % {HTTPS}!에

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.