htaccess 파일에서 특정 페이지(URL)를 제외하고 HTTPS로 리디렉션시키기

워드프레스 정보를 제공하는 블로그 Avada 2018. 11. 16. 00:30 • 댓글:

SSL 보안서버 인증서

SSL 인증서를 설치하고 다음과 같은 코드를 .htaccess 파일에 추가하면 모든 http 트래픽이 https로 리디렉됩니다.

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

하지만 경우에 따라 SSL 인증서를 설치한 상황에서 특정 페이지만 http로 연결되도록 해야 하는 경우가 있을 수 있습니다.

예를 들어, 개인정보를 취급하는 페이지에는 모두 SSL 보안서버 인증서를 설치하여야 하지만 네이버 쇼핑과 네이버 페이를 사용하려면 https가 아닌 일반 http로 접속이 되어야 한다고 합니다.

이 경우 다음 stackoverflow 글을 참고해볼 수 있습니다.

다음과 같은 코드를 htaccess에 추가하면 특정 URL을 제외한 모든 URL이 https로 리디렉션될 것입니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !/npay_product_info/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
# force http:// for selected URLs
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} /npay_product_info/ [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

혹은 다음과 같은 코드를 시도해볼 수 있습니다.

RewriteEngine On
# Go to https if not on room.html
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/room.html$ [NC]
RewriteRule ^(.*)$ https://www.mycookiedomain.com/$1 [R,L]

# Go to http if you are on room.html
RewriteCond %{SERVER_PORT} !80
RewriteCond %{REQUEST_URI} ^/room.html$ [NC]
RewriteRule ^(.*)$ http://www.mycookiedomain.com/$1 [R,L]
// 출처: stackexchange

위의 코드를 적용하면 아마 제대로 작동할 것입니다. 어떤 글에서는 다음과 비슷한 코드를 제시하기도 하네요.

RewriteEngine On
# Go to https if not on /your-page-url/
RewriteCond %{SERVER_PORT} =80
RewriteCond %{THE_REQUEST} !/your-page-url/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
 
# Go to http if on /your-page-url/
RewriteCond %{SERVER_PORT} !=80
RewriteCond %{THE_REQUEST} /your-page-url/ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

기본적으로 위에 제시된 코드와 동일한 것 같습니다.

만약 위의 코드를 넣어도 제대로 작동하지 않으면 HTTPS로 강제로 리다이렉트되도록 하는 플러그인이나 기능이 있으면 해제하면 제대로 작동할 것입니다. 예를 들어, 사이트그라운드에 워드프레스를 설치하면 SG Optimizer가 설치될 수 있습니다.

사이트그라운드 Force HTTPS 설정

워드프레스 알림판 > SG Optimizer > HTTPS Config에서 Force HTTPS 설정이 ON으로 설정되면 위의 코드를 적용해도 작동하지 않을 수 있습니다. SG Optimizer에서 Force HTTPS 설정을 OFF로 설정하고 cPanel에서도 Force HTTPS 설정이 ON으로 되어 있으면 OFF해주도록 합니다.

※ 생각처럼 잘 안 되는 경우 Really Simple SSL 플러그인을 만든 업체에서 만든 Really Simple SSL per page라는 플러그인을 사용하면 수월하게 가능할 것입니다.

워드프레스의 일부 페이지에만 SSL과 HTTPS를 적용하는 싶은 경우에는 "워드프레스의 특정 페이지에만 SSL과 HTTPS를 적용하는 방법"을 참고해보세요.

참고: