여기 계신 분들이라면 당연히 다 알고 계시겠지만

 

문제는 인터넷에 나와 있는 한국말로 된 팁들이 대부분 어딘가 빠져 있거나 허술하거나 잘못되어 있더군요

 

저도 그것들을 믿고 실행했다가 작동이 안 되거나, 최상위 주소만 되고 세부주소는 안되거나 (예: xetown.com 만 되고 xetown.com/square는 안됨) 하는 문제점들을 겪었고

 

결정적으로 지금까지 "301 리다이렉트"가 아니라 "302 리다이렉트"로 적용되어 있었네요

 

(301은 영구적인 이동, 302는 일시적인 이동을 나타내는데, htaccess 리라이트 구문에 기재를 해 놓지 않으면 302로 인식하기 때문에 301이라고 명시해줘야 합니다)

 

이게 영어로 찾아보면 거의 다 제대로 나와 있는데, 한국어로 찾아보면 그렇지 않네요

 

각설하고... 한마디로 설명하자면

 

htaccess 파일 "최상단"에 다음과 같이 적어주면 됩니다.

 

RewriteEngine On

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

 

이거 하나면 끝납니다.

 

그런데 인터넷 찾아보면 다르게 적혀 있는 팁들이 많이 나오는데, 그것들에 대해 간단하게 살펴볼게요

 

 

 

1. RewriteCond %{HTTPS} on

- 잘못된 방식입니다. 문제는 이게 xe공홈 팁게시판에 올라와 있다는 것입니다. 해외 포럼 아무리 뒤져봐도 저렇게는 안 되어 있고 off라던지 !=on이라고 하라고 되어 있습니다.

 

실제로 해봐도 저렇게 하면 안 되고 off로 해야 되더군요. (RewriteCond %{HTTPS} !=on 이것도 됩니다)

 

 

2. RewriteRule 끝에 [R=301,L] 이 없는것

- R=301은 301 리디렉션이라는 뜻이고, L은 마지막이라는 뜻이라고 하더군요. 찾아보니 L은 반드시 필요한건 아니지만 R=301은 반드시 해줘야 합니다. 저게 빠지면 302 리디렉션이라고 감지합니다.

 

(실제로 제가 구글에 검색하면 나오는 모 블로그에 나와있는 거 그대로 적용했더니, 저게 빠져있는 바람에 그동안 302로 되어 있었더군요)

 

 

3. https://%{HTTP_HOST}$1

- 역시 잘못된 방식입니다. https://%{HTTP_HOST}/$1 이라고 해야 합니다. 그런데 "/"가 빠진 채로 %{HTTP_HOST}$1 라고 나와 있는데가 있더군요. 저렇게 하면 최상위 도메인까지만 되고 그 이하 페이지는 리다이렉트가 안됩니다.

 

(https://%{HTTP_HOST}/$1 이랑 https://%{HTTP_HOST}%{REQUEST_URI} 의 차이점은 모르겠습니다. 둘 다 잘 됩니다.)

 

 

4. 그 외

- https://(도메인)\.(도메인)/$1 [R=301,L] 이런 방식이 있는데, 이것도 잘 작동합니다.

 

(.*)이 아니라 ^(.*)$라고 되어 있는것도 많은데 별 차이는 없다고 하네요

 

 

 

이거 찾으러 다니면서 그동안 고생했던게 짜증나기도 하고 해서 올려봅니다. 여기에 적어놓으면 구글에서 검색해도 보이는 거 같으니...

 

아무것도 모르는 분들 괜히 이상한 거 보고 적용하면서 헤매지 말고 이걸로 한번에 해결하시면 좋겠네요.

  • ?
    이런글 엄지척!
  • profile
    root 권한이 있다면 버추얼호스트 안에 아래와 같이 추가해도 됩니다.
    <VirtualHost *:80>
    ...
    Redirect permanent / https://example.com
    ...
    </VirtualHost>
  • profile profile
    저도 이렇게 씁니다. ㅎ
  • ?
    좋은 정보 감사합니다.
  • ?
    버추얼 호스트는 어디에 쓰는건가요?
  • ? profile
    한 컴퓨터에서 여러 사이트(도메인)를 운영할 때 사용합니다.
    자세한 것은 '가상호스트', 'VirtualHost'로 검색해보세요.
  • profile
    좋은 정보 감사합니다.
  • ?
    제가 사용하는 방법입니다.

    #Option 05
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=On
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    </IfModule>


    리다이렉트에 문제가있을까요?
    기븐님이 알려주신방법대로 해보니 접속이 안되는걸로나와서
    문제점을 못찾고, 위 방법대로 사용중입니다 ㅎㅎ;;
  • ? ?
    이건 www 없을때 www 붙여서 리다이렉트 시키는거랑 합쳐진거 같은데 그 외에 뭐가 다른건지는 모르겠네요
  • ?
    전 이걸 적용하면 홈페이지가 다운됩니다 ㅠㅠㅠㅠ
  • ? ?
    .
  • ? profile
    https://xetown.com/qna/184112
  • profile ?
    방금 그거 읽고 댓글 삭제하려고 했는데 그 사이에 댓글을 다셨네요;;
  • profile
    NGINX면 간단하게 이거 하나만 넣어주면됩니다.
    # Redirect non-https traffic to https
    if ($scheme != "https") {
    return 301 https://$host$request_uri;
    } #