Google Search Consoleは、Next.jsサイトにおいてソフト404エラーを頻繁に検出することがありますが、これはクロールバジェットの浪費につながる可能性があります。
ソフト404の正体
本物の404レスポンスは、HTTP 404ステータスコードを送信することで、ブラウザやボットに対して要求されたリソースが存在しないことを伝えます。対照的に、ソフト404はコンテンツがほとんど、あるいは全く提供されていないにもかかわらず、200 OKステータスを返します。検索エンジンは200を正常なページとして読み取りますが、実際にはそのページには価値がありません。その結果、クロールサイクルが浪費され、サイトのコンテンツ品質が低いというシグナルをGoogleに送ることになります。
なぜNext.jsがこの罠に陥るのか
Next.jsのダイナミックルーティングを使用すると、すべてのURLをハードコードすることなく、/products/[slug]のようなページを提供できます。データベースから製品が削除されても、コンポーネントはレンダリングされ続け、コードでデータの欠落をチェックしていない場合、Next.jsはデフォルトで200 OKを返します。ユーザーがURLを打ち間違えたり、リデザイン後に古いルートが残っていたりする場合も同様です。ページは読み込まれますが、意味のあるコンテンツが提供されないため、Search Consoleでソフト404のフラグが立ちます。
サイトオーナーにとってのリスク
- クロールバジェットの浪費 – ボットはサイトごとに割り当てられるリクエスト数に制限があります。ソフト404がその枠を消費してしまうと、実際のページがインデックスされる機会が減少します。
- SEOへのペナルティ – ソフト404が繰り返されると、検索エンジンに対してサイトの品質が低いというメッセージを送ることになります。
- ユーザーエクスペリエンスの低下 – 空のページに辿り着いた訪問者はすぐに離脱するため、直帰率が上昇し、コンバージョンに悪影響を及ぼします。
ソフト404を適切な404に変換する方法
1. 内蔵の notFound ヘルパーを使用する
- App Router –
next/navigationからnotFoundをインポートします。データをフェッチした後、結果が存在しない場合はnotFound()を呼び出します。これにより、Next.jsは正しい404ステータスを送信します。 - Pages Router – データフェッチに失敗した場合、
getStaticPropsまたはgetServerSidePropsから{ notFound: true }を返します。これにより、旧来のルーティングAPIでも同様の動作を実現できます。
2. カスタム404ページをデプロイする
デフォルトのエラーページでは、ユーザーを立ち往生させてしまいます。ナビゲーションリンク、検索ボックス、または関連コンテンツの提案を含む app/not-found.js (App Router) または pages/404.js (Pages Router) を作成しましょう。適切に設計された404ページは、訪問者をすぐにサイトから離脱させるのではなく、サイト内に留まらせることができます。
3. オーファンルートをクリーンアップする
もはや目的を果たしていない静的ページは削除してください。ファイルが残っていてもコンテンツが空である場合は、notFound レスポンスを追加するか、ファイル自体を完全に削除します。pages または app ディレクトリを定期的に監査することで、機能していないURLが漏れ出すのを防ぐことができます。
4. 移動したコンテンツに対して恒久的な(301)リダイレクトを設定する
ページのURLが変更された場合、301リダイレクトを使用することで、ブラウザやボットに対してリソースが恒久的に移動したことを伝えます。next.config.js の redirects キーの下にリダイレクトを追加してください。これにより、古いURLがコンテンツなしで200を返すのを防ぐことができます。
5. Search Consoleのアラートを監視して対処する
Google Search Consoleを頻繁に確認し、ソフト404を特定しましょう。エラーが蓄積する前に、自動クローラーを使用して新しいエラーを表面化させます。各アラートを、根本的なデータフェッチのロジックを検証するための合図として捉えてください。
まとめ
コンテンツを提供せずに200 OKを返すページは、SEO価値を静かに損なわせます。Next.jsでは、ダイナミックルートやチェックされていないデータフェッチによってソフト404が発生しやすくなっていますが、これらを排除することは可能です。notFound を使用し、役立つカスタム404を構築し、オーファンルートを整理し、301リダイレクトを設定し、Search Consoleを注意深く監視することで、クロールバジェットを保護し、ランキングを維持し、訪問者をサイトに留まらせることができます。
