.htaccess 파일, mod_rewrite, http https 리다이렉트에 대하여
http접속 시 https로 리다이렉트 및 외부 사이트에서 핫링크 방지를 위한 리다이렉트 완료된 .htaccess 파일 코드: (아래 그림 1)
지난 글:
목차
- 1.htaccess 파일
- 2. mod_rewrite
- 3. http https 리다이렉트
- 4. 코드 추가 위치
- 5. 적용 후 실험
1.htaccess 파일
ht 액세스 파일이라고 읽는다.(하이퍼 텍스트 문서 access(접근)과 관련된 파일이기 때문이다)
.htaccess는 하이퍼텍스트 액세스(hypertext access)의 준말이며 파일이 위치한 그 폴더에 사용자가 정의한 요청(Request)을 적용한다. 점(dot)으로 시작되며, 점(dot)으로 시작한다는 것은 유닉스 계열의 운영체제에서 숨김 파일로 저장되는 파일이라는 의미이다.
Apache 웹 서버의 디렉터리 접근 수준을 설정하는 역할을 워드프레스가 설치된 디렉터리에 위치하면서, 해당 디렉터리와 하위 디렉토리에 영향을 준다.
수정 완료된 내용
일반적인 설정
<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 패턴이 어떻게 치환될 것인지 정의한다.
또한 마지막에 대한 동작에 대한 옵션 플래그를 지정한다.
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) 파일질라 실행
파일질라 다운로드, 설치 및 실행 방법은 다음 글 참고
2) 위 글 맨 마지막에 .htaccess 파일 위치가 있음.
3) 파일 열기는 대부분 종류의 에디트 프로그램으로 가능함: 메모장, 비주얼 스튜디오 코드, 에디트 플러스, 기타
4) 파일에 마우스 우클릭하여 보기/편집 선택
5) 코드 내용 복사 붙여 넣은 후(수정할 내용 있으면 수정) 저장
6) 파일질라 프로그램 닫기 및 파일 업로드
파일질라 프로그램을 닫으면 다음과 같은 창이 나온다. 이 파일을 서버로 다시 업로드하시겠습니까? - 예 -
6. 적용 후 실험
위 내용처럼 적용 후 직접 실험해 보면 100% 성공하였음을 확인할 수 있음.
앞 글 - '외부 이미지 핫 링크 차단 Rewrite - 도 동일한 방식임. 이미지 링크 방지 코드를 위 (그림 1)처럼 추가한 후 다른 사이트에서 이미지 링크하고 외부 서버로 접속 확인하면 이미지가 차단되거나, 지정한 사이트의 이미지(예를 들어 구글 사이트 접속 화면의 특정 이미지 등)로 리다이렉트 나오도록 한 request가 100% 수용되었음을 확인할 수 있음. 이미지 차단 방식은 앞 글에 기재한 방법 외에, 본인이 지정한 특정 이미지로 지정하는 방법도 있음.
'pc > 워드프레스' 카테고리의 다른 글
이미지 외부 링크 차단(핫링크 금지) (0) | 2022.02.18 |
---|---|
URI URL URN의 차이와 고유주소 (0) | 2022.02.14 |
보안인증서 ssl 발급 방법 (0) | 2022.02.03 |