클라우드플레어 페이지 애플리케이션에 404 페이지 만들기

클라우드플레어 페이지(Cloudflare)의 애플리케이션에서 잘못된 경로로 접근할 때 다른 페이지로 리다이렉션 되는 것을 방지하고, 404 에러 코드를 얻을 수 있도록 만드는 방법.

클라우드플레어 페이지에 404 페이지가 없을 때 발생하는 문제

잘못된 URL을 요청했을 때 다른 페이지로 리다이렉션
잘못된 URL을 요청했을 때 다른 페이지로 리다이렉션

클라우드플레어 페이지의 애플리케이션 내에서 잘못된 경로의 URL 주소로 http 통신을 시도할 경우 의도하지 않은 다른 페이지로의 리다이렉션을 경험할 수 있다. 관련된 설정을 건드린 기억이 없으니 아마도 이게 디폴트 반응인 것 같다.

잘못된 URL이었는데 결과가 정상이라고?
잘못된 URL이었는데 결과가 정상이라고?

그런데 더 문제가 될 수 있는 부분은 http 요청에 대한 결과 상태 코드가 200이라는 것이다. 정상이라는 소리가 되므로 코드 레벨에서 현 상황에 대한 별도의 처리를 구현하는데 어려움이 생긴다.

문제 해결 방법

클라우드플레어 페이지 애플리케이션의 루트 경로에 404.html 배치
클라우드플레어 페이지 애플리케이션의 루트 경로에 404.html 배치

이러한 문제를 해결하려면 클라우드플레어 페이지 애플리케이션에 대해 404 에러 페이지를 별도로 만들어 주면 된다. 파일명은 404.html로 지정한 뒤 루트 경로에 두고 배포하면 그만이다.

추가한 404.html 페이지
추가한 404.html 페이지

당연한 이야기지만 사용자가 404 에러 상황임을 알 수 있도록 추가된 404.html 페이지 내부도 적당히 채워주자.

참고로 404.html 파일을 루트에 두는 경우는 가장 일반적인 경우이며, 좀 더 세분화하여 404 상황을 컨트롤하고 싶다면 클라우드플레어 페이지 매뉴얼의 다음 부분을 참고하면 된다.

클라우드플레어 페이지의 매뉴얼 중
클라우드플레어 페이지의 매뉴얼 중

404.html 파일을 추가한 결과

앞서의 언급한 방법으로 조치를 취하고 난 뒤 안드로이드 클라이언트 앱에서 잘못된 URL 주소로 Jsoup.connect() 요청을 해봤다.

안드로이드 클라이언트 앱에서 잘못된 URL 주소로 요청 시 발생하는 예외와 상태 코드
안드로이드 클라이언트 앱에서 잘못된 URL 주소로 요청 시 발생하는 예외와 상태 코드

그 결과 HttpStatusException 예외가 발생했고, 상태 코드 또한 원하던 데로 404를 얻을 수 있었다. 이제 코드 레벨에서 해당 상태에 대한 후속 조치를 해주면 된다.