Next.jsでsitemap.xmlを用意する


Next.js でサイトマップを作る方法を探してみたけど、情報が全然出てこなかったので見つけた情報をつなぎ合わせてサイトマップを自動作成します。

 

sitemap.xml(サイトマップ)は検索エンジンにサイト内のクロールするWebページを教えるためのファイルです。なくても検索結果に出ないわけではないですが、現在だとあるに越したことはないくらいの印象。

サイトマップ、XMLファイルの作成

調べると記事一覧から xml を作成する部分は見つかるので参考にします。

気になる部分を修正しつつ、記事一覧部分を仮作成してみます。

 

/sitemap.xml にアクセスすると xml が表示されるようになりました。

api/ でなく pages/res から返すのは初なので違和感あります。

ページ一覧の取得

後は getPosts でパス一覧とファイル最終変更日時を取るようにします。

若干複雑になりましたが、やってることは fs の再帰探索とステータス取得です。

 

プロパティ 'flatMap' は型 'xxxx[]' に存在しません。ts(2339) と怒られる場合は tsconfig.jsoncompilerOptions.lib[]"es2019" を追加してください。

flatMap が定義されてない可能性があります。

 

Module not found: Can't resolve 'fs' の場合は package.json に追記。

クライアント(ブラウザ)側で fs が解決できなくなっている状態です。

Dynamic Routes

[dir][file].tsx などの名前でダイナミックルーティングしている場合、この方法では自動で細かいサイトマップの作成が出来ません。

getStaticPathsSSG している場合は、手動で頑張ったり専用のサイトマップを作って robots.txt に追記したりする必要がありそうです。

robots.txt

サイトマップの場所をクローラに教えるためのファイルです。

ルート直下に置けばいいので public/robots.txt として作成します。

 

Sitemapを複数に分ける場合は Sitemap: xxxx 行を下に追加すればいいです。


コメントを残す

メールアドレスが公開されることはありません。