pc/워드프레스

.htaccess 파일과 http https 리다이렉트, mod_rewrite

moodyblues 2022. 2. 19. 13:33

.htaccess 파일, mod_rewrite, http https 리다이렉트에 대하여

http접속 시 https로 리다이렉트 및 외부 사이트에서 핫링크 방지를 위한 리다이렉트 완료된 .htaccess 파일 코드: (아래 그림 1)

지난 글:

2022.02.18 - 이미지 외부 링크 차단(핫링크 금지)

목차

  • 1.htaccess 파일
  • 2. mod_rewrite
  • 3. http https 리다이렉트
  • 4. 코드 추가 위치
  • 5. 적용 후 실험

(그림1) 리다이렉트 코드 추가된 .htaccess 파일
(그림1) 리다이렉트 코드 추가된 .htaccess 파일

1.htaccess 파일

ht 액세스 파일이라고 읽는다.(하이퍼 텍스트 문서 access(접근)과 관련된 파일이기 때문이다)

 .htaccess는 하이퍼텍스트 액세스(hypertext access)의 준말이며 파일이 위치한 그 폴더에 사용자가 정의한 요청(Request)을 적용한다. 점(dot)으로 시작되며, 점(dot)으로 시작한다는 것은 유닉스 계열의 운영체제에서 숨김 파일로 저장되는 파일이라는 의미이다. 

Apache 웹 서버의 디렉터리 접근 수준을 설정하는 역할을 워드프레스가 설치된 디렉터리에 위치하면서, 해당 디렉터리와 하위 디렉토리에 영향을 준다.

수정 완료된 내용

일반적인 설정

 

.htaccess 파일 기본 설정
.htaccess 파일 기본 설정

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

2. mod_rewrite

전달받은 URL을 rewrite(재작성하는 모듈)

IfModule : 조건문

   
RewriteEngine On ← RewriteEngine 의 (기능)을 켠다.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]  
RewriteBase /  ← RewriteBase 부분은 / 로 설정한다.
RewriteBase 부분 = 다시 쓰기 시작할 부분
RewriteRule ^index\.php$ - [L] ← index\.php 요청이 오면 아무것도 안 한다 (L은 'Rewrite를 종료하겠다'라는 의미)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
← f=파일, d=디렉토리
%{REQUEST_FILENAME}과 관련된 파일이나 디렉토리를 확인하고, 없으면 /index.php로 요청을 Rewrite한다.

즉, https://abc.com/1-post-link라는요청이 서버로 들어오면, 1-post-link라는는 파일이나 디렉토리가 없으면 해당 요청을 index.php 페이지로 전달한다.

  • RewriteEngine : Rewrite Engine을 활성화(설정 값으로는 on 값, off 값이 있고, on으로 하면 기능을 켜고 off로 하면 끄는 것이다)
  • RewriteCond : RewriteRule 에 적용될 조건을 정의한다.
  • RewriteRule : Rewrite 규칙을 정의한다.

3. http https 리다이렉트

1) RewriteCond 지시어의 문법

 

RewriteCond TestString Condition [Flags]

2) RewriteRule 의 문법

RewriteRule Pattern Substitution [Flags]

이것은 정규 표현식이며, URL 패턴에 대한 정의와 동시에 해당 URL 패턴이 어떻게 치환될 것인지 정의한다.
또한 마지막에 대한 동작에 대한 옵션 플래그를 지정한다.

http https 리다이렉트 코드 추가
http https 리다이렉트 코드 추가

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
  • RewriteEngine On <-- RewriteEngine 활성화한다.
  • RewriteCond %{HTTPS} off (or !=on) <--HTTPS 가 off이면(또는 HTTPS가 on이 아니면)
  • RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] <-- https ~ 로 Rewrite 한다. - R=301은 301 리디렉션, L: Rewrite를 종료.

4. 코드 추가 위치

위 그림(1) 참조

5. .htaccess 파일 위치 및 파일을 여는 방법

1) 파일질라 실행

파일질라 다운로드, 설치 및 실행 방법은 다음 글 참고

2021.12.27 - FTP 파일질라 다운로드 및 사용 방법

2) 위 글 맨 마지막에 .htaccess 파일 위치가 있음.

3) 파일 열기는 대부분 종류의 에디트 프로그램으로 가능함: 메모장, 비주얼 스튜디오 코드, 에디트 플러스, 기타

.htaccess 파일 위치 및 파일을 여는 방법
.htaccess 파일 위치 및 파일을 여는 방법

4) 파일에 마우스 우클릭하여 보기/편집 선택

5) 코드 내용 복사 붙여 넣은 후(수정할 내용 있으면 수정) 저장

6) 파일질라 프로그램 닫기 및 파일 업로드

파일질라 프로그램을 닫으면 다음과 같은 창이 나온다. 이 파일을 서버로 다시 업로드하시겠습니까? - 예 -

수정후의 .htaccess 파일 업로드
수정 후의 .htaccess 파일 업로드

6. 적용 후 실험

위 내용처럼 적용 후 직접 실험해 보면 100% 성공하였음을 확인할 수 있음.
앞 글 - '외부 이미지 핫 링크 차단 Rewrite - 도 동일한 방식임. 이미지 링크 방지 코드를 위 (그림 1)처럼 추가한 후 다른 사이트에서 이미지 링크하고 외부 서버로 접속 확인하면 이미지가 차단되거나, 지정한 사이트의 이미지(예를 들어 구글 사이트 접속 화면의 특정 이미지 등)로 리다이렉트 나오도록 한 request가 100% 수용되었음을 확인할 수 있음. 이미지 차단 방식은 앞 글에 기재한 방법 외에, 본인이 지정한 특정 이미지로 지정하는 방법도 있음.

'pc > 워드프레스' 카테고리의 다른 글

이미지 외부 링크 차단(핫링크 금지)  (0) 2022.02.18
URI URL URN의 차이와 고유주소  (0) 2022.02.14
보안인증서 ssl 발급 방법  (0) 2022.02.03