특정 페이지만 HTTP에서 HTTPS로 리다이렉트되지 않도록 하는 방법

Last Updated: 2019년 07월 17일 | | 댓글 남기기

네이버페이(Naver Pay)는 네이버에서 제공하는 핀테크의 일종으로, 은행 계좌나 체크카드 또는 신용카드를 미리 등록해 두고 등록한 결제 수단을 통해 결제하는 간편 결제 서비스입니다.

네이버페이 플러그인을 설치한 후에 네이버페이로부터 검수 중 승인이 보류 상태가 되는 경우가 있습니다. 예를 들어, 다음과 같이 "인입로그 확인간 호스트네임 미일치로 인한 호출 실패"를 해결하거나 특정 페이지만 SSL이 적용되지 않도록 조치해줄 것을 안내받을 수 있습니다.

인입로그 확인간 호스트네임 미일치로 인한 호출 실패 현상이 보여지고 있습니다. 따라서 가맹점의 호스팅업체(서버)를 통해 인증서 문제를 해결해주시거나, 혹은 네이버페이 담당자 측 가맹점정보(상품정보 XML)를 http:// 도메인 형식으로 유지하여 https:// 리다이렉트 ​​현상이 발생하지 않도록 수정 부탁 드립니다.

Let's Encrypt 무료 SSL 인증서를 발급받는 경우 "네이버페이 연동 시 ‘인입로그 확인간 호스트네임 미일치로 인한 호출 실패’ 문제"라는 글을 참고하여 인입로그 확인간 호스트네임 미일치로 인한 호출 실패’ 문제를 해결할 수 있습니다.

만약 이 방법을 사용할 수 없다면 가맹점정보(상품정보 XML)를 HTTP:// 도메인 형식으로 유지하여 HTTPS:// 리다이렉트 현상이 발생하지 않도록 수정하는 방법으로 문제를 해결할 수 있을 것입니다.

.htaccess를 사용하여 특정 페이지가 HTTPS로 리다이렉트되지 않도록 설정하기

특정 페이지만 HTTPS로 리디렉션되지 않도록 설정하려면 다음 코드를 .htaccess 파일에 추가하여 테스트해볼 수 있습니다.

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

이 코드가 잘 작동하지 않으면 "htaccess force HTTPS except one page" 글에서 제시하는 코드로 시도해보시기 바랍니다.

nginx 웹서버의 경우 다음 코드를 시도해볼 수 있을 것 같습니다.

server {
    listen 443;

    location /l/ {  # redirect https iframe requests to http server
        return 301 http://$server_name$request_uri;
    }
    # ...
}

server {
    listen 80;

    location / {  # the default location redirects to https
        return 301 https://$server_name$request_uri;
    }

    location /l/ {}  # do not redirect requests for iframe location
    # ...
}
// 출처: nginx: redirect everything from http to https, except one url-pattern (https://stackoverflow.com/questions/27857334/nginx-redirect-everything-from-http-to-https-except-one-url-pattern)

워드프레스 사이트의 경우, 이 방법이 잘 작동하지 않으면 인기 워드프레스 플러그인인 Really Simple SSL을 개발한 업체에서 만든 Really Simple SSL per page 플러그인을 사용해볼 수 있습니다.

웹사이트의 일부 페이지에만 SSL를 적용하거나, 페이지 하나만 SSL로 로드되지 않도록 하려는 경우 이 플러그인이 유용할 수 있습니다. 이 플러그인이 실제로 원하는 대로 작동하는지는 장담할 수 없으므로 플러그인 개발자에게 먼저 문의를 해보면 안전할 것 같습니다.

※ 위에 제시된 코드가 제대로 작동하지 않는 경우, 제대로 작동하는 코드를 알려주시면 글을 업데이트하도록 하겠습니다.

참고:


댓글 남기기

Leave a Comment