공개하기부끄러운블로그
공개하기부끄러운블로그
공개하기부끄러운블로그
전체 방문자
오늘
어제
  • 🥇Home (100)
    • 👨🏻‍💻Infra (73)
      • 🌐Network (4)
      • 🐧Linux (27)
      • 🌎Cloud (9)
      • ⚫️Virtualization (2)
      • 🐳Docker & Kubernetes (1)
      • 🟦WEB & WAS (18)
      • 🟩IaC (0)
      • 🟨CI & CD (0)
      • ⚙️Application (6)
      • 💻Monitoring (2)
      • 📡HA (4)
    • 👨🏻‍💻Development (3)
      • 💻Frontend (2)
      • 💾Backend (0)
      • 🐍Bash (1)
    • 💾Data (16)
      • 🧩Database (13)
      • 📁Storage (3)
    • 🎓BBS (5)
    • 👨‍👧‍👧Git (0)

최근 글

인기 글

최근 댓글

태그

  • 레드마인
  • 톰캣
  • CentOS7 PostgreSQL
  • 다음 주소API
  • 제로보드
  • pcs
  • Redmine
  • GFS2
  • 방화벽
  • 톰캣 HTTP 헤더
  • 웹방화벽
  • Tomcat 취약점
  • 다음 카카오 주소API
  • xe
  • 라이믹스
  • Tomcat HTTP 헤더
  • log4j 취약점
  • CentOS8 PostgreSQL
  • tomcat
  • CentOS6 PostgreSQL
  • 톰캣 버전 노출
  • Tomcat 버전 노출
  • 레드마인 테마
  • 취약점
  • 보안
  • 카카오 주소API
  • pacemaker
  • WAF
  • nginx
  • RHCS

티스토리

hELLO · Designed By 정상우.
공개하기부끄러운블로그

공개하기부끄러운블로그

👨🏻‍💻Infra/🐧Linux

[Linux] http -> https 주소 리다이렉트 시키기

2020. 3. 27. 16:01
반응형

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

 

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

 

저도 그것들을 믿고 실행했다가 작동이 안 되거나, 최상위 주소만 되고 세부주소는 안되거나 (예: 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] 이런 방식이 있는데, 이것도 잘 작동합니다.

 

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

 

 

 

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

 

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

 

출처 : https://xetown.com/tips/147293

반응형
저작자표시 (새창열림)

'👨🏻‍💻Infra > 🐧Linux' 카테고리의 다른 글

[Linux] 대기상태 D(uninterruptible sleep) PID 죽이기  (0) 2020.04.01
[Linux] 깃허브란  (0) 2020.03.31
미들웨어 개념 및 종류  (0) 2020.03.05
[Linux] Process의 대한 Thread 정보 확인  (0) 2020.02.19
wget  (0) 2020.01.30
    '👨🏻‍💻Infra/🐧Linux' 카테고리의 다른 글
    • [Linux] 대기상태 D(uninterruptible sleep) PID 죽이기
    • [Linux] 깃허브란
    • 미들웨어 개념 및 종류
    • [Linux] Process의 대한 Thread 정보 확인
    공개하기부끄러운블로그
    공개하기부끄러운블로그
    IT 기술 블로그

    티스토리툴바