Hugoで作ったブログをgoogleの検索に引っかかるようにしてみる
検索!検索ぅ!
概要
せっかくHugoでブログを作成したので、ブログをgoogleの検索に引っかかるようにしたいと思います。
この記事はそのメモやまとめです。 すでに設定済みの項目がいくつかある。 試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。
現状
ふむ。当然ながらgoogleに対して何もしてなかったので、何も表示されませんね。
やってみる
https://www.inomaso.com/post/hugo-google-search-console/
のサイトを参考に実施します。
Google Search Console開始
取り得ずURLに飛び、ドメインを入れて続行。
そうすると以下のようにDNSレコードに追加しろとのポップアップが出てきました。
route53を利用しているので、以下の記事を参考に進めます。
https://hiroyama.info/2020/12/31/route53-txtrecord/
少々UIが古いですが、Route 53 → ホストゾーン → 対象ドメイン → レコードを作成で同じような画面に進みます。
……と思ったら参考にしたサイトでも新しいUIでの記載方法が書かれていましたね。
しばらく待ってから「確認」を行うと……。
成功!「プロパティに移動」で管理ページに飛べます。
サイトマップ登録
参考手順通りサイトマップ(/sitemap.xml)とRSSフィード(/index.xml)を登録しました。
ここで問題発生。ステータスが「取得できませんでした」となっている。
詳細を見てみると
となっていた。
サイトマップ関連がおかしいようだ。
https://techblg.app/articles/sitemap-couldn-t-fetch-sitemap-could-not-be-read/
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を確認
OKそう!
少し期間を明けてから確認
検索に引っかかるようになりました!