워드프레스 퍼머링크 404 에러 해결하기

워드프레스에서 퍼머링크를 통해서 영구적인 주소로 변경할 수 있는데요.

워드프레스 퍼머링크

워드프레스에서 ‘퍼머링크’는 웹사이트의 각 페이지나 게시물에 대한 고유하고 영구적인 인터넷 주소를 의미합니다. 기본적으로 워드프레스의 Settings(설정) > Permalinks(고정 링크)에서 수정이 가능한데요.

apermal01
permalinks

워드프레스의 기본 주소는 ?post=2176 과 같은 형태로 되어 있습니다. 하지만 이러한 주소는 검색엔진에서 봤을때 효과적이지 않습니다. 그래서 일반적으로 postname 등 주소에 영어 등으로 알아볼 수 있도록 작성하는 편이 많은데요. 저의 경우 글 이름으로 기본설정하여 사용하고 있습니다.

다만 이때 퍼머링크의 설정을 변경할때 nginx 기본 설정으로 되어 있는 경우 404 에러가 발생하기도 합니다.

퍼머링크 404 에러

이 때 기본값에서 변경하게 되면 웹페이지 이동시 404 에러가 발생하게 되는데요.

apermal04

아래의 nginx 설정값으로 설정을 했다면 별다른 에러가 발생하지 않지만, 개별적으로 워드프레스를 설정하셨다면 에러가 발생할 수 있습니다.

바로 아래가 기본 값인데요.

apermal02

주석으로 처리된 try_files $uri $uri/ =404;Nginx 웹 서버의 설정 구문으로, 요청된 리소스를 찾는 과정을 정의합니다. 이를 통해 서버가 클라이언트 요청을 어떻게 처리해야 하는지를 지정할 수 있습니다.

구성 요소 설명

  1. $uri
    클라이언트가 요청한 URL 경로를 의미합니다.
    예: 사용자가 /images/photo.jpg를 요청하면 $uri/images/photo.jpg가 됩니다.
  2. $uri/
    요청 경로 뒤에 슬래시(/)를 추가한 버전입니다.
    예: /images/처럼 디렉토리 요청으로 처리합니다.
  3. =404
    앞의 두 경로에서 유효한 파일이나 디렉토리를 찾지 못하면 HTTP 404 상태 코드를 반환합니다.

작동 방식

try_files 지시어는 순차적으로 조건을 평가하며, 가장 처음 일치하는 조건이 실행됩니다.
위 설정의 흐름은 다음과 같습니다:

  1. 요청된 경로에 해당하는 파일이 있는지 확인합니다.
    예: /images/photo.jpg가 존재하는지 확인.
  2. 요청 경로 뒤에 /를 추가한 디렉토리가 있는지 확인합니다.
    예: /images/ 디렉토리가 존재하는지 확인.
  3. 앞의 두 조건이 모두 실패하면, 404 Not Found 오류를 반환합니다.

즉 앞선 주소에서 페이지를 못찾으면 404가 나오게 되어 있는데요.

?$args
쿼리 문자열(요청 URL의 ?key=value 부분)을 /index.html로 전달합니다.

  • 예: /about?user=123 요청 시, /index.html?user=123으로 전달됩니다.

이를 index.html?$args로 변경해서 요청 쿼리열까지 이동하도록 변경해주면 에러가 발생하지 않습니다.

설정설명
try_files $uri $uri/ =404;요청된 파일이나 디렉토리를 찾지 못하면 404 반환.
try_files $uri $uri/ /index.html;파일이나 디렉토리가 없으면 /index.html 반환. 쿼리 문자열은 전달되지 않음.
try_files $uri $uri/ /index.html?$args;/index.html로 이동하면서 요청 쿼리 문자열을 유지. SPA에서 최적.

그리고 별도로 error_page 404 /404.html; 을 통해서 에러페이지 설정을 해줍니다.

이렇게 설정해주면 더이상 퍼머링크의 에러가 발생하지 않는데요.

잘 사용하시기 바랍니다.

파트너스 활동으로 일정액의 수수료 등을 받을 수 있습니다.

Leave a Comment