콘텐츠로 이동

SPA 새로고침 404 진단 및 해결

  • wikipinksky.kr에서 한글 경로 열람은 처음에 정상
  • 같은 페이지(또는 다른 페이지)를 다시 열거나 새로고침하면 404
  • 루트(/) 접속은 정상, 즉 Quartz 서버 자체는 떠 있음
항목실제값
옵시디언 폴더명01_PROJECTS(프로젝트)
Quartz 빌드 slug01_PROJECTS (괄호+한글 제거됨)
브라우저가 요청하는 URL/01_PROJECTS(%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8)/...
서버의 실제 파일 경로public/01_PROJECTS/...

파일 시스템 상 01_PROJECTS(프로젝트) 폴더가 없어 Caddy/file_server 가 404 반환

@parens path_regexp parens ^(.+?)\([^)]+\)(.*)$
redir @parens {re.parens.1}{re.parens.2} permanent
  • 결과: Location 헤더 빈 값, 정규식 미적용 (Caddy 파일 서버가 우선 동작)
  • 원인: try_files/file_server 가 rewrite/redirect보다 우선 처리되거나 regex 매치 실패
try_files {path} {path}/index.html /index.html
file_server
  • 결과: 루트는 정상, 한글 경로는 계속 404
  • 원인: {path}가 이미 괄호 포함 URL → 실제 폴더와 매칭 실패

3-3. PM2 서버 포트 리버스 프록시

섹션 제목: “3-3. PM2 서버 포트 리버스 프록시”
reverse_proxy 127.0.0.1:8080
  • 결과: 동일 404
  • 원인: Quartz serve-handler 자체에 SPA fallback 로직이 없음

public/ 에 괄호 포함 이름을 실제 slug로 연결:

Terminal window
ln -sf 01_PROJECTS "01_PROJECTS(프로젝트)"
ln -sf 02_AREAS "02_AREAS(영역)"
ln -sf 03_RESOURCES "03_RESOURCES(자료)"

→ 파일 시스템 레벨에서 URL 경로와 일치하도록 매핑

Terminal window
curl -I "https://wiki.pinksky.kr/01_PROJECTS(%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8)/"
# HTTP/2 200 ✓
curl -I "https://wiki.pinksky.kr/01_PROJECTS(%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8)/A_mini-happy/"
# HTTP/2 200 ✓

[!note] 수정이력 2026-05-05 07:45, 루키 (hermes) — 최초 작성