나는 태터툴즈 URL을 숫자가 아닌 문자로 사용하고 있다. 문자로 표시하는 것이 주소를 보다 더 명확하게 표시할 수 있고 검색엔진에서도 더 잘 검색되기 때문이다. 한때는 제목을 그대로 사용했지만 한글을 주소로 사용하면 다음과 같은 문제점이 발생한다.
- UTF 지원 여부에 따라 두개의 주소 체계가 사용됨
- 브라우저에 따라 접속하지 못하는 현상이 발생
따라서 얼마 전부터는 URL을 영어로 만들어서 사용하고 있다. 그런데 예전에 글을 올리면서 URL을 Fucking-XXX로 쓴적이 있는데 태터툴즈에 접근하지 못하는 이상한 현상이 발생했다. 제목을 바꾸면 정상 동작하는 것을 보고 태터툴즈의 필터링 기능일 것으로 생각하고 말았다. 그런데 이런 현상이 며칠 전 포르노에 대한 추억이라는 글을 올리면서 또 발생했다. URL을 보면 알겠지만 원래의 URL은 /entry/Memories-of-Porno
였지만 이 현상 때문에 /entry/Memories-of-Hustler
로 바꾼 것이다.
결국 MyAdmin을 이용해서 MySQL에 접속, URL을 직접 바꿈으로서 일단 이 문제를 해결했다. 그러나 이런 현상이 계속 발생하기 때문에 그 원인을 찾아봤다. 그런데 의외로 원인은 태터툴즈가 아니었다. 나타나는 증상이 조금 이상해서 얼핏 이해가 되지 않았지만 이 문제는 내가 참조 URL 스팸을 막기위해 .htaccess
를 설정했기 때문에 발생한 일이었다.
지긋 지긋한 참조 URL 스팸이라는 글에서 알 수 있듯이 예전에 참조 URL 스팸이 많아서 이런 스팸을 막기위해 .htaccess에 다음과 같은 설정을 추가한 적이 있다.
SetEnvIfNoCase Referer "sex|porno|adult|mature|xxx|fuck|lesbian|
nude|xrate|rape|fetish|sesso|erotic" hacker
Deny from env=hacker
이 설정을 보면 알 수 있지만 참조 URL에 'porno'나 'fuck'가 포함되면 요청 자체를 거절하는 설정이다. 참조 URL에 porno나 fuck가 포함되면 거절하기위해서 한 설정이었다. 따라서 /entry/Memories-of-Porno
라는 주소는 당연히 불러올 수 있다. 그러나 /entry/Memories-of-Porno
페이지에서 불러오는 파일(CSS, JS, 이미지등)의 참조 URL은 /entry/Memories-of-Porno
가 되며 참조 URL 중 'Porno'라는 말이 포함되어 있기 때문에 모조리 거절된 것이었다.
따라서 .htaccess의 설정을 바꾸자 이 문제는 바로 수정되었다. 혹시라도 나와 비슷한 현상이 발생하는 사람은 .htaccess의 설정을 다음처럼 바꾸기 바란다.
SetEnvIfNoCase Referer "sex|porno|adult|mature|xxx|fuck|lesbian|
nude|xrate|rape|fetish|sesso|erotic" [AND]
SetEnvIfNoCase Referer !"offree.net" hacker
Deny from env=hacker