__NEXT_DATA__のjson内のパスがサーチコンソールで認識され404エラーが出てた件
サーチコンソールから何度も来ている「ページがインデックスに登録されない新しい要因」にようやく・・向き合うことにしました。
今回対処したのは、「見つかりませんでした(404)」のリストに上がっているURLを対象に原因を探ってどのような対策を施したかをまとめました。
(対策は最適解が他にないか悩み中...)
404が発生しているURLの確認
サーチコンソールにログインして、サイドバーのインデックス作成>ページもしくは、ヘッダー右にある🔔アイコンのメッセージを開きインデックス登録レポートを開く。
「ページがインデックスに登録されなかった理由」の「見つかりませんでした(404)」を開くとエラーが出ているページのURL一覧が表示されます。
リンク元を探す
![](https://images.microcms-assets.io/assets/5e670c7778344f88b5eed6bb029b015c/523b39f6d97647f6a65a445bfef52b87/Group%20169.png?w=800&h=467)
エラーが出ているURLの虫眼鏡アイコンをクリックすると、URLの検査がはじまり完了すると参照元ページURLを含めた検出情報が表示されます。
原因を探る
page/2/public/images こんなパス指定した記憶がない・・
参照元ページにアクセスし、ページのソースを表示し「public/images」で検索したところ__NEXT_DATA__内のjsonで該当しました・・!
![](https://images.microcms-assets.io/assets/5e670c7778344f88b5eed6bb029b015c/e594ea55656a4c94b2d4f23f87624fc9/Group%20170.png?w=800&h=180)
microCMSで投稿した記事の本文に記載していたサンプルコード「./」の部分が表示しているページから相対パスとしてサーチコンソールが認識してしまったため、リンク先がない=404として検知されていました。
類似の状況や問題の解決方法を探す
ありました・が、これだ!といった解決法はまだないようです😥
- "Paths" in __NEXT_DATA__ are picked up by Google Search Console as internal links
- google crawling link in __NEXT_DATA__
できる対策を施す
一覧ページで取得するフィールドを制限する
microCMSからコンテンツを取得する際、フィールドの制限をしていなかったので本文として定義しているフィールドを除いて必要なフィールドだけを取得するよう変更しました。
相対パスとして認識されないように本文に任意の文字を挿入する
.と/の間、/の後ろにハイフンを2つ挿入し、出力時に置き換えています。
sec.body.replace(/ハイフンハイフン/g, "")
※置き換えを施しているため、ハイフンと記載しています
これでjsonには、.ハイフンハイフン/ハイフンハイフンとなり、サイト表示では./と表示されるようになりました。
サーチコンソールに修正報告
「修正を検証」をクリックすると検証:開始に切り替わりました。
![](https://images.microcms-assets.io/assets/5e670c7778344f88b5eed6bb029b015c/4aca5a4631dd41cbb292a92b34a97fa8/Group%20171.png)
![](https://images.microcms-assets.io/assets/5e670c7778344f88b5eed6bb029b015c/ced261566a394451a8c6ae9d51ecc8a8/image%2045.png)