워드프레스에서 퍼머링크를 통해서 영구적인 주소로 변경할 수 있는데요.
워드프레스 퍼머링크
워드프레스에서 ‘퍼머링크’는 웹사이트의 각 페이지나 게시물에 대한 고유하고 영구적인 인터넷 주소를 의미합니다. 기본적으로 워드프레스의 Settings(설정) > Permalinks(고정 링크)에서 수정이 가능한데요.
워드프레스의 기본 주소는 ?post=2176 과 같은 형태로 되어 있습니다. 하지만 이러한 주소는 검색엔진에서 봤을때 효과적이지 않습니다. 그래서 일반적으로 postname 등 주소에 영어 등으로 알아볼 수 있도록 작성하는 편이 많은데요. 저의 경우 글 이름으로 기본설정하여 사용하고 있습니다.
다만 이때 퍼머링크의 설정을 변경할때 nginx 기본 설정으로 되어 있는 경우 404 에러가 발생하기도 합니다.
퍼머링크 404 에러
이 때 기본값에서 변경하게 되면 웹페이지 이동시 404 에러가 발생하게 되는데요.
아래의 nginx 설정값으로 설정을 했다면 별다른 에러가 발생하지 않지만, 개별적으로 워드프레스를 설정하셨다면 에러가 발생할 수 있습니다.
바로 아래가 기본 값인데요.
주석으로 처리된 try_files $uri $uri/ =404;
는 Nginx 웹 서버의 설정 구문으로, 요청된 리소스를 찾는 과정을 정의합니다. 이를 통해 서버가 클라이언트 요청을 어떻게 처리해야 하는지를 지정할 수 있습니다.
구성 요소 설명
$uri
클라이언트가 요청한 URL 경로를 의미합니다.
예: 사용자가/images/photo.jpg
를 요청하면$uri
는/images/photo.jpg
가 됩니다.$uri/
요청 경로 뒤에 슬래시(/
)를 추가한 버전입니다.
예:/images/
처럼 디렉토리 요청으로 처리합니다.=404
앞의 두 경로에서 유효한 파일이나 디렉토리를 찾지 못하면 HTTP 404 상태 코드를 반환합니다.
작동 방식
try_files
지시어는 순차적으로 조건을 평가하며, 가장 처음 일치하는 조건이 실행됩니다.
위 설정의 흐름은 다음과 같습니다:
- 요청된 경로에 해당하는 파일이 있는지 확인합니다.
예:/images/photo.jpg
가 존재하는지 확인. - 요청 경로 뒤에
/
를 추가한 디렉토리가 있는지 확인합니다.
예:/images/
디렉토리가 존재하는지 확인. - 앞의 두 조건이 모두 실패하면, 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; 을 통해서 에러페이지 설정을 해줍니다.
이렇게 설정해주면 더이상 퍼머링크의 에러가 발생하지 않는데요.
잘 사용하시기 바랍니다.