programming/web

.htaccess

chanchand 2023. 2. 6. 15:50
반응형

.htaccess

디렉터리별로 설정을 변경할 수 있다.

설정 지시어가 있는 파일을 특정 문서 디렉터리에 두면, 그 디렉터리와 하위 디렉터리에 모두 적용된다.

주 설정파일의 <Directory> 와 같은 기능을 한다.

 

.htaccess 파일 사용은 가급적 피해야 한다.

- 성능

파일을 사용하도록 허용하면, 실제로 파일을 사용하지 않는 경우에도 아파치는 디렉터리마다 .htaccess 파일을 찾고, 문서를 요청할 때마다 읽어들이며 성능이 떨어진다.

또한 전체 지시어를 모으기 위해서 아파치는 모든 상위 디렉터리에서 .htaccess 파일을 찾는다.

/www/htdocs/example 디렉터리에 있는 파일을 요청하면, 아파치는 아래 파일들을 찾아야 한다.

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

 

- 보안

사용자에게 서버 설정 변경 권한을 주게 된다.

지시어를 /www/htdocs/example 디렉터리의 .htaccess 파일에 두는 것과 주 서버 설정의 <Directory /www/htdocs/example> 디렉터리 설정에 두는 것은 같다.

하지만 서버 설정 파일은 파일을 요청할 때마다 설정을 읽지 않고, 아파치가 시작할 때 한번만 설정을 읽기 때문에 성능이 더 빠르다.

/www/htdocs/example/.htaccess
AddType text/example .exm

httpd.conf 
<Directory /www/htdocs/example>
	AddType text/example .exm
</Directory>

 

 

- AccessFileName

.htaccess 파일명을 변경할 수 있다.

 

- example

AccessFileName .config

.config 파일명으로 사용 가능하다.

 

 

- AllowOverride

어떤 지시어를 AccessFileName에 지정된 파일에서 사용할 수 있는지 결정한다.

지시어의 Override 항목에서 지시어 사용이 가능한지 확인할 수 있다.

종류 설명
None 허용X
All 허용
AuthConfig AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile 등과 같은 클라이언트 인증 지시어의 사용 허용
FileInfo AddEncoding, AddLanguage, AddType, DefaultType 등과 같은 문서 유형을 제어하는 지시어 사용 허용
Indexes AddDescription, AddIcon 등과 같은 디렉터리 Indexing을 제어하는 지시어 사용 허용
Options Options, XBitHack 등과 같은 특정 디렉터리 옵션 제어하는 지시어 사용 허용
Limit allow, deny, order 등과 같은 호스트 접근 제어하는 지시어 사용 허용

 

 

- AddHandler

확장자를 지정된 핸들러에 매핑한다.

AddHandler cgi-script .cgi

.cgi 확장자를 포함하는 모든 파일이 cgi 프로그램으로 취급된다.

 

 

- AddType

확장자를 지정된 콘텐츠 유형에 매핑한다.

AddType image/gif .gif
AddType image/jpeg jpeg jpg jpe
AddType application/x-httpd-php PHP

 

 

- Server Side Includes

특정 디렉터리에서 Server Side Includes를 가능하게 한다.

아래 지시어가 동작하려면 AllowOverride Options, FileInfo가 모두 필요하다.

 

- example

AddType text/html shtml
AddHandler server-parsed shtml

 

반응형

'programming > web' 카테고리의 다른 글

[Error] TypeError: destroy is not a function  (0) 2023.02.25
[Error] next.js에서 caver-js 에러  (0) 2023.02.24
NVM  (0) 2023.02.05
package-lock.json  (0) 2023.02.05
[ERROR] npm ERR! code 1  (0) 2023.02.05