ToolPal
서버 룸의 랙 마운트 서버들

.htaccess 생성기: Apache 설정을 더 쉽게

📷 Taylor Vick / Pexels

.htaccess 생성기: Apache 설정을 더 쉽게

.htaccess 파일은 Apache 웹 서버의 핵심 설정 도구입니다. HTTPS 강제 적용, Gzip 압축, 디렉토리 목록 비활성화 등 모든 사이트에 필요한 필수 설정과 흔한 실수를 알아보세요.

2026년 4월 15일5분 소요

.htaccess 파일을 처음 접하는 개발자들이 가장 많이 겪는 문제는 "분명히 넣었는데 왜 작동을 안 하지?"입니다. 이 파일은 보이지 않는 곳에서 조용히 존재하다가, 설정이 잘못되면 사이트 전체를 500 에러로 날려버리는 독특한 특성이 있습니다.

복잡한 문법 외우기 없이 바로 올바른 .htaccess 파일을 생성하려면 htaccess-generator 도구를 활용하세요. 하지만 각 설정이 무슨 역할을 하는지 이해해 두면 문제 발생 시 훨씬 빠르게 원인을 찾을 수 있습니다.

.htaccess란 무엇인가?

.htaccess는 Apache 웹 서버에서 디렉토리 단위로 동작하는 설정 파일입니다. 파일 이름이 점(.)으로 시작하기 때문에 Unix/Linux 시스템에서는 기본적으로 숨김 파일로 취급됩니다.

Apache가 파일 요청을 처리할 때, 해당 디렉토리와 상위 디렉토리를 순서대로 확인하면서 .htaccess 파일을 찾아 설정을 적용합니다. 덕분에 메인 서버 설정을 건드리지 않고도 특정 디렉토리나 사이트에 대한 규칙을 정의할 수 있습니다.

.htaccess가 필요한 주요 상황:

  • 공유 호스팅 환경 (메인 설정 파일 접근 불가)
  • HTTPS 리다이렉트, URL 재작성
  • 압축 및 캐싱 설정
  • 접근 제한 및 보안 헤더 설정

모든 사이트에 필요한 3가지 핵심 설정

1. HTTPS 강제 리다이렉트

HTTP로 접속하는 사용자를 HTTPS로 자동 전환하는 것은 보안과 SEO 모두에 필수입니다.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

R=301은 영구 리다이렉트를 의미하며, 검색 엔진에게 URL이 변경되었음을 알립니다. SSL 인증서가 실제로 설치되어 있는 상태에서만 이 설정을 추가하세요. 그렇지 않으면 사이트가 완전히 접근 불가 상태가 됩니다.

2. Gzip 압축 활성화

HTML, CSS, JavaScript 같은 텍스트 파일은 압축하면 크기가 60-80%까지 줄어듭니다. 서버 CPU 사용량은 약간 늘지만, 사용자 입장에서는 페이지 로드 속도가 눈에 띄게 빨라집니다.

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css
  AddOutputFilterByType DEFLATE text/javascript application/javascript
  AddOutputFilterByType DEFLATE application/json application/xml
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

<IfModule> 래퍼는 mod_deflate 모듈이 설치되어 있을 때만 이 블록을 실행하도록 합니다. 없으면 오류가 발생하는 것을 방지해주는 안전 장치입니다.

3. 디렉토리 목록 비활성화

index.html이 없는 디렉토리에 접근하면 Apache가 기본적으로 해당 디렉토리의 모든 파일 목록을 보여줍니다. 이는 심각한 보안 문제입니다.

Options -Indexes

한 줄로 전체 디렉토리 목록 노출을 막을 수 있습니다. 프로덕션 환경에서는 항상 비활성화해야 합니다.

htaccess-generator 도구에서 이 세 가지 옵션을 체크하기만 하면 즉시 사용 가능한 코드를 얻을 수 있습니다.

흔한 실수와 함정

AllowOverride 설정 문제

.htaccess가 "작동하지 않는다"고 느낄 때 가장 먼저 확인해야 할 것이 바로 이것입니다. 메인 Apache 설정에 다음과 같이 되어 있으면:

<Directory /var/www/html>
    AllowOverride None
</Directory>

.htaccess 파일이 존재해도 Apache가 완전히 무시합니다. All로 변경해야 합니다:

<Directory /var/www/html>
    AllowOverride All
</Directory>

이 변경은 메인 설정 파일 접근이 필요하므로, 공유 호스팅에서는 호스팅 업체에 문의해야 할 수도 있습니다.

www와 non-www 리다이렉트 동시 설정 문제

HTTPS 리다이렉트와 www/non-www 통일 리다이렉트를 각각 별도의 규칙으로 작성하면 리다이렉트 루프나 체인이 발생할 수 있습니다. 올바른 방법은 두 조건을 하나의 규칙으로 처리하는 것입니다:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://yourdomain.com%{REQUEST_URI} [R=301,L]

이렇게 하면 http/https, www/non-www의 네 가지 조합 모두 하나의 리다이렉트로 처리됩니다.

Nginx에 .htaccess를 올리는 경우

Nginx는 .htaccess 파일을 전혀 읽지 않습니다. Apache에서 Nginx로 서버를 이전했거나, 처음부터 Nginx를 사용하는 경우에는 .htaccess 규칙을 Nginx server 블록 설정으로 변환해야 합니다.

일부 WordPress 호스팅이 Nginx를 사용하면서도 cPanel 등 인터페이스에서는 Apache처럼 보이는 경우가 있어 혼란을 주기도 합니다. 반드시 실제 웹 서버 종류를 확인하세요.

WordPress 사이트 실전 설정

WordPress는 고유 주소 기능을 위해 .htaccess가 필수입니다. 새 WordPress 사이트 기준으로 권장하는 전체 설정입니다.

1단계: HTTPS 리다이렉트 (WordPress 블록 위에 추가)

# HTTPS 강제 적용
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

2단계: WordPress 기본 블록

WordPress 설정 > 고유 주소에서 저장 시 자동 생성됩니다:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

3단계: 성능 및 보안 설정 (WordPress 블록 아래에 추가)

# Gzip 압축
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript
</IfModule>

# 브라우저 캐싱
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType text/css "access plus 1 month"
  ExpiresByType application/javascript "access plus 1 month"
</IfModule>

# 디렉토리 목록 비활성화
Options -Indexes

# 민감한 파일 보호
<FilesMatch "\.(env|log|ini|bak|sql|conf)$">
  Order allow,deny
  Deny from all
</FilesMatch>

# wp-config.php 보호
<Files wp-config.php>
  Order allow,deny
  Deny from all
</Files>

이 전체 설정을 htaccess-generator 도구에서 몇 번의 클릭으로 생성할 수 있습니다.

.htaccess vs httpd.conf 직접 편집

서버 접근 권한이 있다면 .htaccess 대신 가상 호스트 설정 파일에 직접 규칙을 넣는 것이 성능상 유리합니다. Apache는 매 요청마다 .htaccess 파일을 읽기 때문에 소폭이지만 성능 오버헤드가 발생합니다.

항목.htaccesshttpd.conf
적용 범위디렉토리 단위서버 전체
재시작 필요없음필요
권한 필요파일 소유자루트
성능약간 낮음최적

공유 호스팅이라면 .htaccess가 유일한 선택지입니다. VPS나 전용 서버라면 가능하면 httpd.conf를 사용하는 것을 권장합니다.

수정 후 반드시 테스트하기

.htaccess 파일을 수정한 후에는 즉시 확인이 필요합니다:

  1. 브라우저에서 사이트를 열어 500 에러 여부 확인
  2. Apache 에러 로그 확인 (/var/log/apache2/error.log)
  3. curl -I http://yourdomain.com으로 리다이렉트 확인
  4. 수정 전 백업 보관

htaccess-generator가 생성하는 코드는 문법이 검증된 상태이므로 오타로 인한 500 에러 위험을 크게 줄여줍니다.

.htaccess는 작지만 강력한 파일입니다. 올바르게 설정하면 보안과 성능을 한 번에 챙길 수 있습니다.

자주 묻는 질문

이 글 공유하기

XLinkedIn

관련 글