hotoolong's blog

RailsやVim、業務で気になったことを綴ってます

ソフト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