워드프레스 기본 .htaccess 파일: 내용과 복구 방법
워드프레스가 고유주소를 위해 작성하는 정확한 .htaccess 블록, 워드프레스가 이를 자동으로 다시 생성하는 시점, 그리고 게시물이 404를 반환하지만 홈페이지는 계속 로드될 때 수동으로 복구하는 방법.
워드프레스의 기본 .htaccess 파일은 /2026/10/게시물-이름/과 같은 고유주소가 404를 반환하는 대신 올바르게 해석되도록, 소프트웨어가 사이트 루트의 .htaccess에 작성하는 짧은 RewriteEngine 블록입니다. 다음과 같은 형태입니다.
# 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
이것은 아파치 HTTP 서버에 관한 워드프레스 공식 가이드와 예쁜 고유주소에 관한 HelpHub 페이지에 문서화된 rewrite 로직에서 그대로 가져온 정확한 블록입니다. RewriteBase가 /가 아니라면 — 예를 들어 워드프레스가 하위 폴더에 설치되어 있기 때문에 — 대신 해당 경로와 일치하며, 이것도 마찬가지로 정상이고 워드프레스 자체가 생성하는 것입니다.
핵심 요약
- 워드프레스는 파일이 쓰기 가능하고 설정 > 고유주소를 저장할 때마다 아파치와 LiteSpeed에서만 이 블록을 자동으로 생성합니다.
- 파일이 누락되거나 손상된 경우, 홈페이지를 제외한 모든 고유주소가 404를 반환합니다. rewrite 규칙 없이는 홈페이지만 찾을 수 있기 때문입니다.
- 사용자나 플러그인이 추가하는 모든 것은
# BEGIN WordPress위에 있어야 하며 절대 마커 내부에 있으면 안 됩니다 — 워드프레스는 고유주소를 저장할 때마다 그 사이의 모든 것을 덮어씁니다.
실제 경로와 추가 규칙으로 파일을 다시 만들어야 하나요? 워드프레스 .htaccess 생성기가 브라우저에서 바로 올바른 파일을 만들어 줍니다.
각 줄이 하는 일
RewriteEngine On은 이 디렉터리에 대해 아파치의 mod_rewrite 모듈을 활성화합니다. 이 줄이 없으면 이후의 모든 것이 작동하지 않습니다.
RewriteBase /는 다시 작성된 경로가 사이트 루트를 기준으로 상대적임을 아파치에 알려줍니다. 워드프레스는 사이트가 실제로 어디에 있는지에 따라 이를 설정합니다 — 하위 폴더에 설치된 경우 /가 아닌 RewriteBase /blog/를 받습니다.
RewriteRule ^index\.php$ - [L]은 효과 없는 가드입니다: 요청이 이미 index.php라면 rewrite가 중지되고 요청이 변경 없이 통과합니다.
두 개의 RewriteCond 줄이 실제 로직입니다. %{REQUEST_FILENAME} !-f와 !-d는 “이 요청이 실제 파일과 일치하지 않고, 실제 디렉터리와도 일치하지 않는가?”를 묻습니다. 마지막 규칙이 작동하려면 둘 다 참이어야 합니다 — 이렇게 하면 실제 이미지, CSS 파일, 업로드된 PDF가 직접 제공되며 워드프레스의 라우팅에 전혀 닿지 않습니다.
RewriteRule . /index.php [L]은 고유주소를 작동하게 만드는 규칙입니다: 앞의 두 조건을 통과한 모든 것 — 즉 실제 파일이나 폴더가 아닌 것 — 은 index.php로 전송되며, 워드프레스 자체의 라우팅(WP_Query, rewrite 태그)이 해당 URL이 실제로 어떤 게시물, 페이지 또는 아카이브를 의미하는지 결정합니다.
워드프레스가 이 파일을 다시 생성하는 시점과 생성하지 못하는 시점
워드프레스는 화면에서 아무것도 바뀌지 않아도 설정 > 고유주소를 열고 변경사항 저장을 클릭할 때마다 .htaccess를 직접 작성하려고 시도합니다. 이 저장 작업은 flush_rewrite_rules()를 실행시키며, 이는 .htaccess를 쓰기용으로 열고 현재 블록을 마커 사이에 삽입하려고 시도합니다.
이 시도는 다음과 같은 경우 조용히 실패하여 파일이 누락되거나 오래된 상태로 남습니다.
- 파일이나 상위 폴더가 PHP가 실행되는 사용자에 대해 쓰기 가능하지 않은 경우. 많은 공유 호스팅에서는 PHP가 FTP로 파일을 업로드한 사용자와 다른 시스템 사용자로 실행되므로, FTP 클라이언트에서 올바르게 보이는 권한이라도 워드프레스의 쓰기를 막을 수 있습니다.
- nginx를 사용하는 경우.
.htaccess는 아파치와 LiteSpeed에만 해당하는 메커니즘입니다(AllowOverride에 관한 아파치 문서 자체가 그 이유를 설명합니다: nginx에는 요청마다 다시 읽는 디렉터리별 설정 파일이 없습니다). nginx에서의 동등한 방법은 server 블록 안의try_files지시어이며, 이는 서버에 접근 권한이 있는 사람만 편집할 수 있습니다. 워드프레스는 절대 이를 대신 작성할 수 없습니다. - **메인 아파치 설정에서 사이트 디렉터리에 대해
AllowOverride가None**으로 설정된 경우. 이것은.htaccess가 아무것이든 재정의할 수 있게 하는 설정입니다. 아파치 문서는 명확하게 밝히고 있습니다:AllowOverride None에서는 “.htaccess파일이 완전히 무시됩니다” — 워드프레스가 완벽한 파일을 작성해도, 이 설정이 서버 수준에서 변경되기 전까지는 아무런 효과가 없습니다. - 파일이 삭제되었거나 처음부터 존재하지 않았고, 저장 중 무언가가 재생성을 유발하지 않은 경우 — 가장 흔한 원인은 고유주소 구조가 이미 동일했기 때문에 워드프레스가 다시 작성할 변경 사항을 발견하지 못한 것입니다.
수동으로 복구하는 방법
게시물과 페이지가 404를 반환하는데 홈페이지는 계속 작동한다면, 이는 .htaccess가 누락되거나 손상된 전형적인 신호입니다. 두 단계로 해결하세요.
1. 먼저 원클릭 해결법을 시도하세요. 워드프레스 대시보드에서 설정 > 고유주소로 이동하여 아무것도 변경하지 않고 변경사항 저장을 클릭합니다. 파일이 쓰기 가능하다면 이것만으로도 파일이 다시 생성되어 해결됩니다.
2. 이것으로 해결되지 않으면 파일을 수동으로 만드세요. FTP/SFTP나 호스팅 업체의 파일 관리자로 연결하여, 워드프레스가 설치된 폴더(wp-config.php가 있는 폴더)로 이동하고, .htaccess가 실제로 존재하는지 확인합니다 — 이것은 숨김 파일이므로 일부 파일 관리자는 기본적으로 숨깁니다. “숨김 파일 표시”를 켜세요.
- 누락되었다면, 정확히
.htaccess라는 이름의 새 파일을 만드세요(.txt가 아니고, 점 앞에는 아무것도 없어야 합니다). - 위의 기본 블록을 붙여넣고, 워드프레스가 하위 폴더에 있다면
RewriteBase를 조정하세요. - 저장한 후 게시물의 고유주소를 다시 불러와서 작동하는지 확인하세요.
이후에도 여전히 404가 발생한다면, 원인이 “.htaccess가 누락됨”에서 “.htaccess가 무시됨”으로 바뀐 것입니다 — 호스팅 업체에 AllowOverride에 대해 문의하세요. 아파치가 무시하도록 지시받은 디렉터리에 있는 올바른 파일은 파일이 없는 것과 정확히 똑같이 작동하기 때문입니다.
자신만의 규칙 대 워드프레스의 블록
플러그인이나 수동 편집은 리디렉션, 핫링크 방지, 캐시 헤더와 같은 자체 규칙을 추가할 수 있습니다. 이것은 워드프레스가 생성하는 것과는 별개의, 분리된 블록이며 둘은 절대 겹치면 안 됩니다.
# 사용자나 플러그인이 추가한 규칙 — 워드프레스 마커 위
<FilesMatch "\.(jpg|jpeg|png|gif)$">
# 예: 핫링크 방지, 캐시 규칙 등
</FilesMatch>
# 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
# BEGIN WordPress와 # END WordPress 사이에 배치된 모든 것은 누군가 다음에 고유주소 화면을 저장할 때 조용히 삭제됩니다. 워드프레스가 그 전체 부분을 자신의 소유로 취급하고 완전히 다시 작성하기 때문입니다. 이것이 “내가 설정한 규칙이 사라졌다”는 불만의 가장 흔한 원인입니다 — 의도적으로 제거된 적은 없으며, 단지 워드프레스가 자신의 것으로 간주하는 블록 안에 있었을 뿐입니다. 특히 리디렉션에 관해서는 올바르게 작성된 워드프레스 .htaccess 리디렉션 규칙에서 이들이 어디에 있어야 하는지와 루프를 피하는 방법을 확인하세요.
이것은 또한 파일을 편집한 직후 갑작스러운 500 Internal Server Error가 발생하는 가장 흔한 원인이기도 합니다: 다른 아파치 버전을 위해 작성된 포럼 게시물에서 복사한 규칙(2.2의 Order/Deny 구문이 2.4의 Require 구문과 섞인 것)은 아래에 있는 워드프레스 블록을 포함해 전체 파일의 구문 분석을 깨뜨리며, 건드린 부분만이 아니라 사이트 전체가 다운됩니다.
기본 블록을 넘어서
기본 블록은 고유주소 라우팅만 처리합니다. 민감한 파일에 대한 접근을 강화하거나, 공격 표면을 실제로 줄여주는 소수의 .htaccess 규칙 — /uploads에서 PHP 실행을 차단하거나 wp-config.php에 대한 직접 요청을 거부하는 것 — 을 추가하고 싶다면 실제로 도움이 되는 워드프레스 .htaccess 보안 규칙을 참고하세요. 그리고 고유주소가 다른 이유로 404를 반환한다면 — 잘못된 고유주소 구조, 오래된 규칙을 제공하는 캐시 계층, 하위 디렉터리에서의 멀티사이트 충돌 — 작동하지 않는 워드프레스 고유주소가 다른 원인들을 다룹니다.
자주 묻는 질문
워드프레스 기본 .htaccess 파일이란 무엇인가요?
워드프레스가 # BEGIN WordPress와 # END WordPress 사이에 작성하는 RewriteEngine 블록으로, 고유주소가 404를 반환하는 대신 index.php로 해석되도록 합니다.
워드프레스의 정확한 기본 .htaccess 코드는 무엇인가요?
RewriteEngine On, RewriteBase /, index.php에 대한 통과 규칙, 요청이 실제 파일이나 디렉터리가 아님을 확인하는 두 가지 조건, 그리고 나머지 모든 것을 index.php로 보내는 마지막 규칙입니다. 전체 블록은 이 가이드의 맨 위에 나와 있습니다.
홈페이지를 제외한 모든 게시물이 404를 반환하는 이유는 무엇인가요?
홈페이지는 rewrite 규칙 없이도 찾을 수 있지만, 다른 모든 고유주소는 이를 필요로 합니다. 아파치에서 .htaccess가 누락되거나 손상되면 정확히 이런 패턴이 발생합니다.
워드프레스가 .htaccess를 자동으로 다시 생성하나요?
파일이 쓰기 가능할 때만 가능합니다 — 설정 > 고유주소를 다시 저장하면 이것이 실행됩니다. 파일이 쓰기 가능하지 않거나, 자동으로 생성하지 않는 호스팅에서 누락되었거나, AllowOverride가 꺼져 있다면 워드프레스는 이를 대신 수정할 수 없으며 직접 파일을 만들거나 수정해야 합니다.
nginx에는 왜 워드프레스 .htaccess 파일이 없나요?
.htaccess는 아파치와 LiteSpeed에서만 작동합니다. nginx에는 디렉터리별 설정 파일이 없으며 .htaccess를 완전히 무시합니다. 동일한 라우팅은 nginx의 server 블록 내 try_files 규칙으로 작성됩니다.
고유주소를 저장한 후 .htaccess가 깨진 이유는 무엇인가요?
자체 규칙이 # BEGIN WordPress / # END WordPress 마커 위가 아니라 내부에 배치되었고, 워드프레스가 다음 고유주소 저장 시 그 부분 전체를 덮어썼습니다.
실제로 필요한 보안 또는 리디렉션 규칙을 더한, 깨끗하고 올바른 .htaccess를 만드세요 — 무료 워드프레스 .htaccess 생성기로.
FAQ
질문
워드프레스 기본 .htaccess 파일이란 무엇인가요?
고유주소가 작동하도록 워드프레스가 사이트 루트의 .htaccess에 작성하는 짧은 RewriteEngine 블록입니다. # BEGIN WordPress와 # END WordPress 주석 사이에 위치하며, 실제 파일이나 폴더가 아닌 모든 요청을 index.php로 보내 워드프레스가 무엇을 표시할지 결정하도록 합니다.
워드프레스의 정확한 기본 .htaccess 코드는 무엇인가요?
RewriteEngine On, RewriteBase /, 기존 파일과 디렉터리를 변경 없이 통과시키는 규칙, 그리고 쿼리 문자열을 유지하면서 나머지 모든 것을 index.php로 보내는 마지막 RewriteRule입니다. 전체 블록은 아래에 나와 있으며 워드프레스가 설정 > 고유주소에서 직접 생성하는 블록과 일치합니다.
홈페이지를 제외한 모든 게시물이 404를 반환하는 이유는 무엇인가요?
이는 아파치에서 .htaccess가 누락되거나 손상된 경우의 전형적인 증상입니다. 서버가 index.php를 직접 찾을 수 있기 때문에 홈페이지는 로드되지만, 다른 모든 고유주소는 그곳에 도달하기 위해 rewrite 규칙이 필요하며, 이 규칙이 없으면 아파치는 존재하지 않는 파일을 찾다가 404를 반환합니다.
워드프레스가 .htaccess를 자동으로 다시 생성하나요?
파일이 쓰기 가능하고 설정 > 고유주소를 다시 저장할 때만 가능합니다. 워드프레스는 파일에 쓸 수 있는지 확인하고, 가능하면 마커 사이의 블록을 다시 작성합니다. 파일이 누락되거나 읽기 전용이거나 PHP가 실행되는 사용자와 다른 사용자가 소유한 경우, 워드프레스는 조용히 실패하며 직접 만들어야 합니다.
nginx에는 왜 워드프레스 .htaccess 파일이 없나요?
.htaccess는 아파치(및 LiteSpeed)의 기능이기 때문입니다. nginx에는 이에 대응하는 기능이 없으며 이 파일을 완전히 무시합니다. nginx에서는 동일한 라우팅 로직이 server 블록 안의 try_files 지시어로 작성되며, 이는 호스팅 업체나 시스템 관리자만 편집할 수 있습니다.
고유주소를 저장한 후 .htaccess가 깨진 이유는 무엇인가요?
거의 항상 플러그인이나 이전의 수동 편집이 자체 규칙을 워드프레스 마커 위가 아닌 내부에 배치했기 때문입니다. 워드프레스는 고유주소가 저장될 때마다 # BEGIN WordPress와 # END WordPress 사이의 모든 것을 덮어쓰므로, 그 안에 배치된 규칙은 경고 없이 삭제됩니다.