nextjsで作ったサイトのsitemapが延々とエラー出て死にそうになってるのでメモ。
1.next-sitemapで作成
多分これが一番ラク。動的にサイトマップを作る上で一番楽だし、複数の動的URLがある場合なおさら。
動的に作りたい場合はここを見ると良さそう。
2.next-sitemapで実際にサイトマップをbuildする
この辺を参考にして作った。
が、ここで問題発生。
3.サイトマップが認識されない
{URL}/sitemap.xmlでsitemapを開くことは出来ているけど、なぜかサーチコンソール側で取得ができない状態が続く。
7/25の夕方に出したものが、7/27現在に至るまで『取得できませんでした』と表示される。数千ページに及ぶ大規模サイトでサイトマップが読み込まれないのはまずい、しかもSEOを主体に考えていたのでなおさら。
以下、色々試す。
4-1.独自ドメイン化を試す
エックスドメインが実質無料で提供していたので、独自ドメイン化を試してみる。
設定が死ぬほど面倒くさい上に、『サーチコンソール内の公開URLテストで読み込めない』という症状が発生する。当然のごとくsitemapは取得できない。
得が一切なかったのでvercel.appに戻す。
4-2.outディレクトリからpublicにbuildされるようにする
途中紹介した記事は全てoutディレクトリを前提としたものだったが、その場合next exportを使う必要があり、これを使うとSSGとの相性が悪いらしく何かしらの警告が出る。
また、表示はされるので問題はないと思うけど、outディレクトリの場合、vercelのoutputの欄でsitemap.xmlやrobots.txtが確認できないので、これがエラーの原因かもしれないと当たりをつける。
この動画を元に、next exportを使わない形に修正。outputでsitemap.xmlが確認できるようになった。
↑ここまでがさっきまでの話で、エラーの方は未だ継続中。sitemapが『取得できませんでした』と表示されている。
---
一応、時間経過で直ったという報告が散見されてはいるので、現状目立ったエラーや警告、気になるポイントはないため、これで様子を見てみる。
このsitemap周りで死ぬほどイライラしたので、今後もう無いように一応書き残しておく。
追記:4-2の修正後、最終読み込み日時に日付が入っていた状態から、送信に日付が入っている状態に変わってた。