.htaccess 파일?
디렉토리별로 설정을 변경 할 수 있는 설정파일을 말하는데, 분산 설정파일이라고도 부르죠.
이 파일을 해당 디렉토리에 두면 그 디렉토리와 모든 하위 디렉토리에 지시어를 적용할 수 있습니다.
사실 이 .htaccess 파일은 기본 파일 명이 이렇게 되어있을 뿐이고 바꾸고 싶으면
아파치 설정 파일에 있는 AccessFileName 항목에서 얼마든지 바꿀 수 있습니다.
왜 .htaccess?
이 설정파일에서 할 수 있는 일은 모두 아파치 설정파일에서 할 수 있는 일입니다.
그래서 일반적으로 주서버파일에 접근할 수 없는 경우가 아니라면
.htaccess 파일을 사용하면 않도록 권고하고 있습니다.
디렉토리에 있는 .htaccess 파일 설정 AddType text/example .exm |
httpd.conf 파일에 있는 섹션 설정 <Directory /www/htdocs/example> AddType text/example .exm </Directory> |
표 1디렉토리 설정(두 설정은 같은 의미를 갖습니다.)
그런데도 .htaccess 파일이 필요한 이유는 사용자가 디렉토리별 서버 설정을 다르게 주고 싶지만
root권한을 가지고 있지 않을 때 사용하는 것입니다.
개인 서버가 아닌 호스팅을 받아서 사용하는 경우가 그렇죠.
공식사이트에서는 두가지 이유로 .htaccess를 사용하지 않길 권고하는데
첫번째로 성능.
AllowOverride가 .htaccess파일 사용을 허용하면 아파치는 디렉토리마다 .htaccess파일을 찾습니다.
그래서 .htaccess파을을 허용하면 실제로 파일을 사용하지 않는 경우에도 .htaccess 파일을 찾기 때문에 성능이 떨어집니다.
그리고 .htaccess파일은 문서를 요청할 때마다 파일을 읽습니다.
예를 들어 "/www/htdocs/example/"의 파일을 요청하면 아파치는 다음 파일을 찾습니다.
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
의미없이 파일시스템을 4번 더 접근하는 것이죠.(접근 가능 경로 설정에 따라서 접근 횟수는 변경될 수 있습니다.)
두번째로 보안.
서버 설정을 사용자에게 주면 종종 예측하지 못한 문제가 발생 할 수 있기에 사용자에게 줄 권한은 제한되어야 합니다.
그렇다고 너무 적은 권한을 주면 기술지원요청이 오기 때문에 그 수준을 적절히 설정해야 합니다.
지시어 적용
먼저 .htaccess 를 사용하려면 아파치 설정파일에서 AllowOverride None으로 되어있지 않아야 합니다.
해당 지시어가 있으면 .htaccess 를 인식하지 않습니다.
다음으로 .htaccess 에서 지시어를 사용하려면 위와 마찬가지로 AllowOverride에서 허용을 해야 합니다.
예를들어 .htaccess 에서 Options 지시어를 사용하려면 아파치 설정파일에서 AllowOverride Options 설정을 해야 합니다.
인증을 .htaccess에서 하려면 아파치 설정파일에서 AllowOverride AuthConfig설정을 해야 합니다.
인증 예제
인증을 .htaccess에서 하려면 미리 아파치 설정파일에 AuthConfig 지시어를 설정해야 합니다.
그리고 아래 내용을 .htaccess 파일에 입력합니다.
AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/password.file AuthGroupFile /www/passwords/group.file Require Group admins |
위내용은 해당 디렉토리에 접근하면
Password Required란 메시지를 보여주며
Admins 그룹에 속하며
password.file파일에 있는 사용자가
올바른 암호를 입력하면 접근을 허용한다는 뜻입니다.
(위 내용은 .htaccess 뿐만 아니라 아파치 설정파일에서도 적용이 가능합니다.)
자세한 내용은 아래의 인증, 권한부여, 접근제어 링크에서 확인할 수 있습니다.(한글 번역판입니다.ㅎㅎ)
@ .htaccess 파일 설정 : http://httpd.apache.org/docs/2.0/ko/howto/htaccess.html
@ 인증 권한부여, 접근제어 http://httpd.apache.org/docs/2.0/ko/howto/auth.html