検索!検索ぅ!

概要

せっかくHugoでブログを作成したので、ブログをgoogleの検索に引っかかるようにしたいと思います。

この記事はそのメモやまとめです。 すでに設定済みの項目がいくつかある。 試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。

現状

001

ふむ。当然ながらgoogleに対して何もしてなかったので、何も表示されませんね。

やってみる

https://www.inomaso.com/post/hugo-google-search-console/

のサイトを参考に実施します。

Google Search Console開始

取り得ずURLに飛び、ドメインを入れて続行。

001

そうすると以下のようにDNSレコードに追加しろとのポップアップが出てきました。

001

route53を利用しているので、以下の記事を参考に進めます。

https://hiroyama.info/2020/12/31/route53-txtrecord/

少々UIが古いですが、Route 53 → ホストゾーン → 対象ドメイン → レコードを作成で同じような画面に進みます。

004

……と思ったら参考にしたサイトでも新しいUIでの記載方法が書かれていましたね。

しばらく待ってから「確認」を行うと……。

001

成功!「プロパティに移動」で管理ページに飛べます。

サイトマップ登録

参考手順通りサイトマップ(/sitemap.xml)とRSSフィード(/index.xml)を登録しました。 ここで問題発生。ステータスが「取得できませんでした」となっている。 詳細を見てみると

001

となっていた。

サイトマップ関連がおかしいようだ。

https://techblg.app/articles/sitemap-couldn-t-fetch-sitemap-could-not-be-read/

001

oh …。

修正

https://balloon-jp.vercel.app/2020/12/hugo-の-robots.txt-と-sitemap/

https://hugo-de-blog.com/hugo-sitemap/

https://note.com/hitoshiarakawa/n/n723813a7a625

が非常に参考になりそうです。こちらを参考にブログ自体を修正していきます。 (Hugoの詳しい仕様などは省略します……。参考先を読んでいただければ……。)

まずはconfig.tomlに以下を追加します。(defaultがfalseのようですがわかりやすくします)

enableRobotsTXT = "false"

次にstatic/robots.txtを作成します。少しだけシンプルにしています。

User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml

さらにlayouts/sitemap.xmlを作成。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  {{ range .Data.Pages }}
  {{ if or (or (in .Permalink "/tags/") (in .Permalink "/categories/")) (in .Permalink "/blog/")}}
  {{ else }}
  <url>
    <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
    <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}
  </url>
  {{ end }}
  {{ end }}
</urlset>

ここでデプロイしても変わらず。 ????と思いgoogleのエラーを詳しく追うと

ページをインデックスに登録できません: アクセス禁止(403)が原因でブロックされました

……これsitemap用意とかそれ以前の問題っぽい……。

原因を更に探る

https://zenn.dev/ivry/articles/e1df636519aaca

Cloudfrontの地理的ディストリビューションの制限を確認

あ……。 terraformを確認すると日本からのアクセスのみにしている。 googleのクローラーは米国からやってくるので弾かれている可能性が高そう。

  # 日本からのみアクセス可能
  restrictions {
    geo_restriction {
      restriction_type = "whitelist"
      locations        = ["JP"] # アクセスを許可する国コードを追加
    }
  }
-      locations        = ["JP"] # アクセスを許可する国コードを追加
+      locations        = ["US", "JP"] # アクセスを許可する国コードを追加

Deloy後再度googleを確認

008

009

OKそう!

少し期間を明けてから確認

009

検索に引っかかるようになりました!