여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. 무단 링크 방지 | .htaccess 수정하여 무단 링크를 방지하자.

무단 링크 방지 | .htaccess 수정하여 무단 링크를 방지하자.

1개월전 작성
무단 링크 방지 Thumbnail
무단 링크 방지 Thumbnail

무단 링크 는 웹사이트의 트래픽을 고의로 유출시키거나 서버 자원을 낭비하는 등 다양한 문제를 일으킬 수 있다.
특히 다른 사이트에서 내 콘텐츠를 무단으로 사용할 경우 SEO에도 악영향을 미칠 수 있다.

.htaccess 파일을 활용하여 무단 링크 방지하는 방법을 알아보자.

.htaccess

.htaccess 파일은 아파치 웹 서버에서 디렉토리 단위로 설정을 변경할 수 있는 강력한 도구다.

웹호스팅 서버에서 .htaccess 파일이 보이지 않는 경우 숨김 파일 표시를 하여 확인해보고 확인되지 않을 시 파일을 새로 만들자.

FileZilla 설정 방법

FileZilla » [서버] » [숨김 파일 강제 표시]

무단 링크

무단 링크는 내 웹사이트의 이미지, 동영상, 파일 등을 다른 사이트에서 임의로 사용하는 것을 말한다.
이는 서버 대역폭을 낭비하고 웹사이트 속도를 저하시킨다.

따라서 무단 링크를 차단하는 것은 웹사이트 운영에 있어 필수적인 작업이다.

무단 링크 방지

.htaccess 파일을 활용하면 특정 도메인에서만 내 콘텐츠에 접근할 수 있도록 제한할 수 있다.

기본 코드

내 사이트의 도메인을 제외한 모든 외부 사이트에서 콘텐츠를 사용하지 못하도록 차단한다.

기본 코드만 사용시 검색엔진에서 나온 검색 결과에서 내 사이트를 선택하면 접속이 되지 않는다.
아래 추가 팁을 확인하여 특정 확장자만 차단해보자.

SetEnvIF Referer "^(https://example\.com|^$)" permit
Order deny,allow
Deny from all
allow from env=permit
사용된 코드 설명
SetEnvIF Referer
:
Referer(요청을 보낸 사이트 주소)가 “https://example.com”로 시작하는 경우 permit 환경 변수를 설정한다. .(점)을 문자 그대로 인식하도록 이스케이프(\) 해야한다.
“^(https://example\.com|^$)” permit
:
https://example.com로 시작하는 사이트 주소, 리퍼럴이 없으면
Order deny,allow
:
차단 규칙을 적용하는 순서를 지정하여 deny(차단) 규칙을 먼저 적용한 후 allow(허용) 규칙을 적용한다.
Deny from all
:
모든 요청을 기본적으로 차단한다.
allow from env=permit
:
permit 환경 변수가 설정된 요청만 허용한다.

추가 팁

특정 확장자만 차단하거나 대체 파일을 표시하고 싶다면 아래 팁을 확인하자.

그러나 특정 확장자만 차단하거나 대체 파일을 표시하고 싶지 않다면

특정 확장자만 차단

특정 확장자만 차단하고 싶은 경우 위의 기본 코드에 <FilesMatch “\.(확장자)$”> … </FilesMatch> 블록으로 둘러싼다.

여러 확장자를 추가하고 싶으면 아래 예시와 같이 | 로 구분하여 확장자|확장자|확장자 이렇게 넣는다.

<FilesMatch "\.(jpg|jpeg|png|gif|mp4|avi|mov|mkv)$">
SetEnvIF Referer "^(https://example\.com|^$)" permit
Order deny,allow
Deny from all
allow from env=permit
</FilesMatch>
사용된 코드 설명
<FilesMatch “\.(jpg|jpeg|png|gif|mp4|avi|mov|mkv)$”>
:
특정 파일 확장자에 대한 접근 제어를 설정하는 블록의 시작을 나타낸다. .(점)을 문자 그대로 인식하도록 이스케이프(\) 해야한다. $는 앞의 확장자로 끝난다는것을 확인하기위해 넣는다.

</FilesMatch>
:
FileMatch 블록을 닫는다.

대체 파일 표시

무단 링크로 접근한 경우 대체 파일을 표시할 수 있다.

파일 대체는 SEO에 부정적인 영향을 미칠 수 있기 때문에 대체 콘텐츠가 원래 콘텐츠와 관련성이 높고 품질이 좋을 때만 고려하는 것이 좋다.
SEO를 최적화 하려면 원래 파일을 유지하거나 필요 시 관련성이 높은 콘텐츠로 리디렉션하는 것이 더 효과적이다.

RewriteRule \.(확장자)$를 어떤 확장자일 때 어떤 대체 파일을 보여줄 것인지 지정하자.

여러 확장자를 추가하고 싶으면 아래 예시와 같이 | 로 구분하여 확장자|확장자|확장자 이렇게 넣는다.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ /대체이미지경로.png [NC,R,L]
RewriteRule \.(mp4|avi|mov|mkv)$ /대체동영상경로.mp4 [NC,R,L]
사용된 코드 설명
RewriteEngine On
:
URL 재작성 모듈을 활성화하여 이후의 RewriteRule과 RewriteCond가 작동하도록 한다.

RewriteCond %{HTTP_REFERER}
:
Referer가 “https://example.com”이 아닌 경우에만 다음 규칙을 적용한다.

RewriteRule \.(jpg|jpeg|png|gif)$
:
요청된 파일이 이미지 형식(jpg, jpeg, png, gif)일 경우, 대체 이미지로 리디렉션한다.
.(점)을 문자 그대로 인식하도록 이스케이프(\) 해야한다. $는 앞의 확장자로 끝난다는것을 확인하기위해 넣는다.

/대체이미지경로.png
:
이미지가 img 폴더 안에 들어가있다면 /대체이미지경로.png 대신 /img/이미지파일명.png 으로 입력한다.

[NC]
:
No Case. 대소문자를 구분하지 않겠다는 의미. URL이 대문자이든 소문자이든 상관없이 규칙이 적용된다.

[R]
:
Redirect. 리디렉션을 수행하겠다는 의미. 사용자의 브라우저에 새로운 URL로 리디렉션하라는 응답이 전송된다.
기본적으로 302 리디렉션(임시 리디렉션)으로 처리되지만 [R=301]과 같이 숫자를 추가하여 301(영구 리디렉션) 등을 지정할 수 있다.

[L]
:
Last. 이 규칙이 마지막 규칙임을 나타낸다. 이 규칙이 적용된 후에는 이후에 추가하는 다른 규칙은 무시된다.

모두 반영한 코드

추가 팁까지 모두 다 반영한 코드를 알아보자.

RewriteEngine On
# 파일 접근 제어
<FilesMatch "\.(jpg|jpeg|png|gif|mp4|avi|mov|mkv)$">
SetEnvIF Referer "^(https://example\.com|^$)" permit
Order deny,allow
Deny from all
allow from env=permit
</FilesMatch>
# 파일 대체
RewriteCond %{HTTP_REFERER} !^https://example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ /대체이미지경로.png [NC,R,L]
RewriteRule \.(mp4|avi|mov|mkv)$ /대체동영상경로.mp4 [NC,R,L]

결론

위와 같은 방법으로 .htaccess 파일을 활용해서 무단 링크를 효과적으로 차단할 수 있다.

웹사이트의 안전한 운영을 위해 필수적인 작업임을 절대 잊지 말자.

Mingg`s Diary
밍구
공부 목적 블로그