Hugoで記事がインデックス登録されない問題の解決

作りたてのHugoの記事がインデックス登録されない問題を解決します。

ブログを作って記事を公開するからにはやっぱり検索にヒットして読まれたいですよね。
しかしながら、作りたてのブログサイトではなかなかインデックス登録されない(URL直打ちなら記事に飛べるが検索してもヒットしない)という悩みがあります。

このブログサイトもHugoを使っているのですが、なかなかインデックス登録されなくてモチベーションが下がる事態がありましたが、そんな問題を解決する方法があったので記事にします。

また、インデックス登録のエラーについても触れます。

Hugoで記事をすぐにインデックス登録させる方法

結論から言うとGoogle Search Consoleを使うことです。

Google Search Consoleにいくと「URL検査」という機能が左上にあります。
これは自分が書いた記事がインデックス登録されているかを確認できる機能なのですが、確認以外にも登録されていなかったら登録を促すことができます

Google Search Consoleの画像

インデックス登録エラーの解決

Google Search Consoleで上記のインデックス登録の促進を行っても上手くいかない場合がありました。
具体的には、インデックス登録エラーが出ているようで、エラーの中身を読むとサイトマップが正しくないような説明がありました。

実際に生成されたサイトマップを確認するには、トップページURLの末尾に/sitemap.xmlを追記したURLを直接打ち込みます。

サイトマップを見てみると、それぞれの記事のURLが相対的に記されており、それに対してエラーが出ていることが分かりました。

×
<url>
  <loc>./post/hugo-index-error/</loc>
</url>

<url>
  <loc>https://blog.akikazewf.dev/post/hugo-index-error/</loc>
</url>

絶対パスに直したところ、エラーが出なくなったので絶対URLで生成されるように直していきます。
Hugoのsitemap.xmlはこちらの設定をもとに生成されているようです。
https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/sitemap.xml

記事のURLの部分は<loc>タグが担ってそうですね。

この設定を上書きしていきます。以下のHugoのドキュメントを見ると、上書きにはlayouts/sitemap.xmlを作成すれば良さそうなので、自分のプロジェクトにファイルを作成します。
https://gohugo.io/templates/sitemap-template/#override-built-in-templates

さっきのテンプレートの中身をまるごとコピーし、<loc>の部分を変更して絶対パスで生成されるようにします。

<loc>{{ .Permalink }}</loc>
<loc>https://blog.akikazewf.dev{{ .Permalink }}</loc>

これで生成されるサイトマップに載っている記事のURLが絶対URLになり、Search Consoleのエラーも解決しました。無事に記事がインデックス登録されます。

終わりに

Google Search Consoleを使ってインデックス登録を促すことで、自分の記事を検索でヒットしない問題を解決できました。

のんびり生きていきたい。
Image by Freepik
Built with Hugo
Theme Stack designed by Jimmy