ServerName이없는 기본 가상 호스트에서 HTTP를 HTTPS로 리디렉션
내 아파치 서버에서 들어오는 모든 http 요청을 동등한 https 요청으로 리디렉션 할 수 있기를 원합니다. 문제는을 지정하지 않고 기본 가상 호스트에 대해이 ServerName
작업을 수행하고 요청 URL에 나타난 서버 이름에 상관없이 리디렉션이 작동 하도록 하고 싶습니다 . 나는 다음과 같은 것을 바라고 있습니다.
NameVirtualHost *:80
<VirtualHost *:80>
RedirectPermanent / https://%{SERVER_NAME}/
...
</VirtualHost>
이것이 가능 합니까 아니면 Redirect
의지해야 Rewrite
합니까?
가상 호스트 구성에 다음을 추가하십시오.
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
둘 다 잘 작동합니다. 그러나에 따라 아파치 문서 는 사용하지 않아야합니다 mod_rewrite
간단한 리디렉션을 위해, 그리고 사용하는 Redirect
대신. 따라서 그들에 따르면 바람직하게는 다음을 수행해야합니다.
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com
# ... SSL configuration goes here
</VirtualHost>
제 /
후에는 Redirect
이 재 지정해야하는 경우 두 번째 부분은 상기 URL이다.
URL을 하위 도메인으로 리디렉션하는 데 사용할 수도 있습니다. Redirect /one/ http://one.example.com/
이것은 불필요한 리디렉션을 생략하는 완전한 방법이기도합니다.)
* : 80 VirtualHost 항목의 RewriteRule에는 조건이 필요하지 않으므로 이러한 규칙은 .htaccess 파일에서 사용하기위한 것입니다.
RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
계획 :
RewriteEngine on
==> 엔진 활성화
RewriteCond %{HTTPS} off [OR]
==> 비 https 연결에서 일치 또는 ([OR]을 설정하지 않으면 암시 적 AND!)
RewriteCond %{HTTP:X-Forwarded-Proto} !https
==> https 없이 전달 된 연결 (프록시,로드 밸런서 등)에서 일치
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
==> 두 조건 중 하나가 일치하면 전체 URL을 다시 작성하여 클라이언트가이를 '학습'하도록 301을 전송하고 (일부는 수행하고, 일부는 수행하지 않음) 마지막 규칙에 대해 L을 보냅니다.
'Program Tip' 카테고리의 다른 글
문자열의 문자 순서를 반대로 (0) | 2020.11.09 |
---|---|
Symfony2 컨트롤러에서 사용자 IP 주소를 어떻게 얻습니까? (0) | 2020.11.09 |
효율적인 방법으로 파일의 줄 수를 어떻게 얻을 수 있습니까? (0) | 2020.11.09 |
최대 절전 모드 : flush () 및 commit () (0) | 2020.11.09 |
isset ()에 대한 PHP 속기? (0) | 2020.11.09 |