기능 소개

이 기능은 오래된 문서의 URL을 통해 접근했을 경우, 해당 문서의 변경된 경로로 보내주는 기능이다.

이 기능을 왜 만들었나?

블로그를 오래 관리하다 보니 어떤 문서는 이름을 바꾸기도 하고 어떤 문서는 경로를 옮기기도 한다.

상식적으로는 HTTP 301 을 쓰는 것이 맞겠지만, github page에 jekyll로 돌리고 있는데 HTTP 301을 쓰기가 애매하다.

그래서 만들었다.

구현

404.html

---
layout: default
permalink: /404.html
---

<div class="container">
  <h1>404</h1>

  <p><strong>Page not found :(</strong></p>
  <p>The requested page could not be found.</p>
</div>
<script>
    const url = window.location.pathname;
    console.log(url);

    // 여기에 fallback 문서 경로 목록을 나열해 준다.
    const fallbackRouter = {
        '/wiki/spring-documents-overview/': '/wiki/spring/document/overview/'
    };

    // 현재 주소가 fallback 문서 목록에 존재한다면, 올바른 경로로 보내준다.
    if (fallbackRouter[url]) {
        window.location.href = fallbackRouter[url];
    }
</script>

위의 fallback 문서 경로 목록을 보자.

const fallbackRouter = {
    '/wiki/spring-documents-overview/': '/wiki/spring/document/overview/'
};

이 코드는 '/wiki/spring-documents-overview/' 주소는 이제 이사간 주소이니, 같은 문서의 새 주소인 '/wiki/spring/document/overview/'로 이동하라는 의미이다.

다음 경로로 접속해 보면 404 페이지로 갔다가 올바른 주소로 강제로 옮겨지는 것을 경험할 수 있다.

https://johngrib.github.io/wiki/spring-documents-overview/