Railsアプリケーションで簡単に自分で作った404/500エラーページを表示させる手順です。404/500エラーページもユーザービリティの面やコンバージョンの面で非常に重要ですよね!
あるRailsアプリケーションでルーティング系のエラーはルートにリダイレクトするようにしていたのですが、SEO的にはNGだと知りました。
『ソフト404エラー』と呼ばれており、ルーティングがないのに404ステータスを返さないのは検索エンジンさん的にはなはだそうです。
ということで、Webサービスを作るときにはルーティングと、エラー時の挙動をしっかり制御したほうがいいと反省中です。
🐞 routes.rbのルーティングの修正
config/routes.rb
のルーティングのブロックの最後に以下を追加
Rails.application.routes.draw do |
🐠 ApplicationControllerにエラー発生時のメソッドを追加
app/controllers/application_controller.rb
にエラー発生時のためのメソッドを追加。
class ApplicationController < ActionController::Base |
errors/error_404
、errors/error_500
は動的にページを生成する場合の設定方法です。ちなみに静的なページにしたい場合は上のコードの render
の部分を次のように変更。
render file: Rails.root.join('public/404.html'), status: 404, layout: false, content_type: 'text/html' |
🎳 カスタムエラー用のViewの作成
app/views/errors/error_404.html.haml
と app/views/errors/error_500.html.haml
を作成して404/500エラー時のViewを作成。
たったこれだけで、404/500エラー発生時のユーザーの印象を改善できると思います。ぜひチャレンジしてみてください!
🍄 参考リンク
Railsでカスタムな404エラーのページを出力する方法 - memo.yomukaku.net
http status code 404 - How to redirect to a 404 in Rails? - Stack Overflow
🗻 更新履歴
(2013-12-07 15:40) 変なフォーマットを指定された時の対応
(2017-02-01 16:37) routesを追記