プログラミング

【Ruby on Rails開発】動的な404ページを作成する

投稿日:2019年7月8日 更新日:

今日はRailsで動的な404ページを作成する方法をまとめていきます(個人メモの側面強め)。Railsで公開アプリを作っている場合は404ページをいい感じに設計してユーザーに次のアクションにつなげてもらうことが必要になります。404発生時に他のページにリダイレクトして200で返すとソフト404といってGoogleの検索エンジンからマイナス評価を受けるのでSEOが重要なサイトは絶対にNG。

Railsにはデフォルトで404ページがpublicディレクトリの中にあるのですがこれは静的なファイルでviewsディレクトリのlayoutを使用することができません。今日はviewsのlayoutを使用していい感じな404ページを実装していきたいと思います。

開発環境の準備をしよう

まずは開発環境下でも本番用の404ページが表示されるようにしていきましょう。そのままだと404が起こった時にデバッグ用のroutesページが開いてしまいます。

config > development.rbの変更点

デフォルトはtrueとなっていますが、ここをfalseにします。これで本番環境と同様の404ページを確認できるようになります。レポジトリにpushする前に絶対に元に戻すようにしてくださいね。

動的な404ページを実装

それでは、404ページ用のrouteの設定をしていきましょう。

config > routes.rbへの記載内容

「#例外」以下のコードをroutes.rb内の一番下にコピペしてください。

次にApplicationControllerに例外が発生したときの処理を書いていきましょう。

controllers > application_controller.rbへの記載内容

上記のコードを追加していってください。

最初の「unless Rails.env.development?」は本番環境のみで動作させたい(開発環境ではデバッグ用の画面を出したい)ので入れています。開発時にはここを「unless Rails.env.production?」このようにしておけば開発環境下でも動作します。

今回はエラー時に表示されるview layoutをerrorディレクトリに入れるようにしました。viewsディレクトリの中にerrorディレクトリを作成しその中に「404.html.erb」と「500.html.erb」を作成してください。テスト表示ようにh1タグだけ適当になにか文字列を入れておきましょう。

これで準備OKです。この状態で存在しないディレクトリにアクセスしてみてください。そうすると今作成をした「404.html.erb」が表示されます。後はいつものようにviewを作っていけばOKです。

-プログラミング
-,

Copyright© STRESS HACK , 2019 All Rights Reserved.