hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

ソフト404をRailsで対応する

Search Consoleのエラーでソフト404が表示されることが度々あり、対応方法を考えてみました。

support.google.com

本来であれば、sitemap.xmlで送信しているURLから削除するなどの対応をすべきです。

ただ、検索ページなどで動的に変化する場合、
ページ内もしくは、サイト内の導線を切ることで対処します。
検索ページでファセットを使ってるのもその一つですね。

ファセットが使えない場合は、対応しかねるケースもあるかと思います。
単純に404ページを出すのでもいいのですが、
サイトの回遊がうまく誘導できなくなってしまうので、ユーザビリティが落ちてしまいます。

そこで ソフト404対応として ステータスのみ 404で返却して 検索結果がなかったことを表示するため、 コントローラーでstatusを変更してあげるのか良いかと思います。

self.status = :not_found if @items.blank?

@itemsは検索結果のオブジェクトが格納されています。 検索結果が0件の場合にstatus に :not_found (404)を設定しています。 selfはActionControllerのメソッドを呼び出したいためです。付け忘れないでください。 簡単ですね。

github.com