nginxで404ページをリダイレクトさせずに表示する
このサイトの404がnginxのデフォルトのままで流石にあんまりにもあんまりでした. 日本語で説明を表示してトップページへのリンクぐらい残しておこうと思いました.
nginxで404ページをカスタムする方法は簡単で,
error_page 404 /404/index.html;
と書けばそこのファイルを参照してくれます.
しかし, このデフォルト設定には1つ問題があって, 404エラー時に404のファイルのURLに飛んでしまいます.
これはユーザにとっても管理者にとっても望ましくない動作です.
ユーザはどのURLが404だったのか把握することが難しいですし, 管理者へのエラー報告の情報も減ってしまいます.
そこで以下のように記述します.
location = /404/index.html {
internal;
}
これでリダイレクトは内部リダイレクトになってURLはそのまま404エラーになってくれます.