본문 바로가기
카테고리 없음

.htaccess 파일

by 잘먹는 개발자 에단 2024. 9. 19.

.htaccess ( hypertext access ) 

 

- .htaccess 파일은 아파치와 같은 웹 서버에서 특정 디렉토리에 대해 설정을 적용하는 파일이다.

- 이 파일을 사용하면 해당 디렉토리와 하위 디렉토리에 대해 서버 설정을 제어할 수 있다. 

- 예를 들어, 디렉토리에 대한 접근 권한을 설정하거나, URL을 재작성 REWRITE 하는 등의 작업을 수행할 수 있다.

- 앞의 점.은 .숨김파일을 나타낸다. 

 

 

.htaccess 파일의 역할과 기능

1. 권한 설정 및 접근제어

- .htaccess 파일을 통해 특정 디렉토리나 파일에 접근할 수 있는 권한을 설정할 수 있다.

- 이를 통해서 보안 설정을 강화하거나, 특정 사용자만 해당 디렉토리에 접근할 수 있도록 제한할 수 있다.

 

2. URL 재작성 

- .htaccess 파일을 사용해 사용자가 입력하는 URL을 다른 URL로 변환할 수 있다.

- 예를 들어서, 오래된 URL을 새로운 URL로 리다이렉트하거나, 더 간견하고 보기 좋은 URL로 변환할 수 있다.

- 주로 SEO 검색엔진 최적화를 위해서 사용된다. Search Engine Optimization

 

3. 디렉토리 인덱스 설정

- 기본적으로 디렉토리 내의 파일 리스트가 자동으로 브라우저에 표시될 수 있다.

- .htaccess 파일을 사용하면 이러한 디렉토리 인덱스 생성을 막아서 파일 노출을 방지할 수 있다.

 

4. SSL 강제적용

- HTTPS 프로토콜을 강제할 때도 .htaccess 파일을 사용한다.

- 이를 통해서 HTTP로 접근하는 요청을 HTTPS로 자동 리다이렉트할 수 있다.

 

5. 캐시관리

- 브라우저 캐시 설정을 통해 파일이 얼마동안 캐시되어있을지 설정할 수 있다.

- 이렇게 하면 페이지 로딩 시간을 줄이고 서버 부하를 줄일 수 있다.

 

 

아파치 설정과 .htaccess의 관계

- .htaccess 파일과 아파치 서버의 설정 파일인 apache2.conf 또는 sites-enabled 파일을 보완하는 역할을 한다.

- 보통 전역 설정 파일은 웹 서버 전체에 적용되지만, .htaccess 파일은 특정 디렉토리에 대한 설정만을 오버라이드 (덮어쓰기) 할 수 있다.

 

요청부터 .htacess 파일 적용까지의 과정

1. 클라이언트가 서버에 요청을 보내면 아파치는 먼저 전역 설정파일 (apache2.conf)을 참조한다.

2. 그 다음에 sites-enables의 설정을 불러온다.

3. 특정 디렉토리에 .htaccess 파일이 있으면, 그 디렉토리와 하위 디렉토리에 대해서 .htaccess 파일의 설정이 적용된다.

 

장단점은 다음과 같다.

 

장점

- 서버 전체를 재시작하지 않고, 특정 디렉토리만 빠르게 설정할 수 있다.

- 서버 관리 권한이 없는 경우에도 특정 디렉토리에 대한 설정을 할 수 있다.

 

단점

- 무분별하게 사용하면 성능 저하가 발생할 수 있다.

- 서버는 .htaccess 파일이 있는지 계속 탐색하기 때문에 불필요한 탐색 시간이 소요된다.

    ㄴ 이 부분에는 하단 첨부1에서 자세히 다룸

- 보안적인 문제가 생길 수 있다. 잘못된 설정으로 인해 권한 없는 사용자에게 디렉토리 접근 권한을 제공할 수 있다.

 

* .htaccess 파일은 웹 서버 설정을 세부적으로 제어하고나 할 때 유용하지만, 무분별하게 사용하면 성능 저하와 보안 문제가 발생할 수 있다. 때문에 꼭 필요한 경우에만 사용하는 것이 좋으며, 가능한 전역 설정파일 (apache2.conf 등)을 통해 서버 설정을 관리하는 것이 더 바람직하다.

 

 

 

첨부 1 (출처 : [Apache2] .htaccess 설정 파일 사용하기 (tistory.com) ) 글 그대로 첨

AllowOverride가 .htaccess 파일을 사용하도록 허용하면, 아파치는 디렉토리마다 .htaccess 파일을 찾는다.

그래서, .htaccess 파일을 허용하면 실제로 파일을 사용하지 않는 경우에도 성능이 떨어진다. 

또, .htaccess 파일은 문서를 요청할 때마다 읽어들인다.

 

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

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

 

/.htaccess

/www/.htaccess

/www/htdocs/example/.htaccess

 

그래서 그 디렉토리에 있는 파일을 접근할 때마다 설정파일이 전혀 없어도 파일시스템을 4번 더 접근해야 한다.

( / 에서도 .htaccess 파일을 허용한 경우를 말한다. 보통은 허용하지 않는다.