【HUGO】特定のページをnoindexにする

特定のページをインデックスされないようにしたい

HUGOで作ったサイトで自動生成ページ(タグページやカテゴリページなど)をクロールしてもらいたくない場合があると思います。

この記事ではその設定方法をご紹介します。

前提条件

今回ご紹介する方法で動作検証をした環境は以下の通りです。

  • ジェネレーター : HUGO (Ver 0.77.0)
  • ホスティングシステム : Netlify
  • テーマ : Annanke

テーマによっては同じ方法でできないかもしれません。

実装内容

/tags, /categories, /pages 以下のディレクトリをインデックスから除外した。

やり方

/layouts/_default/baseof.htmlのhead内に以下のような記述を追加する。

    {{ if eq (getenv "HUGO_ENV") "production" | or (eq .Site.Params.env "production")  }}
      {{ if or (eq .Section "categories") (eq .Section "tags") (eq .Section "pages") }}
        <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
      {{ else }}
        <META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
      {{ end }}
    {{ else }}
        <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
    {{ end }}

本番環境と開発環境を分岐させる条件式の中に入れ子で、特定のセクションのみnoindexにするような条件分岐を入れています。

私の場合は本番環境ではディレクトリがカテゴリー、タグ、固定ページの時をnoindexするよう設定しました。

このコードをそのまま貼ると開発環境での動作確認がしにくいので、動作確認時には書き換えたほうがいいと思います。
(開発環境ではすべてのページがnoindexになるため。)

注意点

条件分岐の eq(~~~) eq(~~~)の間にはスペースが必要です。
スペースがない場合文法エラーによりビルドができません。

参考ページ

それではよき第五人格ライフを。
以上ChooRowがお伝えしました。