Hugoで作ったブログをgoogleの検索に引っかかるようにしてみる

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

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

## 現状
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/7860e6b5-4e93-a668-7cea-d69b2694cd99.png)
ふむ。当然ながらgoogleに対して何もしてなかったので、何も表示されませんね。

## やってみる
https://www.inomaso.com/post/hugo-google-search-console/

のサイトを参考に実施します。
### Google Search Console開始
取り得ずURLに飛び、ドメインを入れて続行。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/efbf871e-e844-67fd-6be3-c1582316ce27.png)


そうすると以下のようにDNSレコードに追加しろとのポップアップが出てきました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/0081f917-e1b1-b582-50e9-13bf17573380.png)
route53を利用しているので、以下の記事を参考に進めます。

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

少々UIが古いですが、Route 53 → ホストゾーン → 対象ドメイン → レコードを作成で同じような画面に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/b43b5456-2a3b-d1a6-f0ca-03ccf6d718b0.png)
……と思ったら参考にしたサイトでも新しいUIでの記載方法が書かれていましたね。

しばらく待ってから「確認」を行うと……。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/ec2a122f-9673-ae25-03b8-f259c82fac5f.png)
成功！「プロパティに移動」で管理ページに飛べます。

### サイトマップ登録
参考手順通りサイトマップ(/sitemap.xml)とRSSフィード(/index.xml)を登録しました。
ここで問題発生。ステータスが「取得できませんでした」となっている。
詳細を見てみると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/1a4d8a99-a587-0024-dcb4-4736720723eb.png)
となっていた。

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/fc4afa8e-154a-fff4-ce3a-99721559633d.png)

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のようですがわかりやすくします)
```config.toml
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のクローラーは米国からやってくるので弾かれている可能性が高そう。
```terraform
  # 日本からのみアクセス可能
  restrictions {
    geo_restriction {
      restriction_type = "whitelist"
      locations        = ["JP"] # アクセスを許可する国コードを追加
    }
  }
```

```
-      locations        = ["JP"] # アクセスを許可する国コードを追加
+      locations        = ["US", "JP"] # アクセスを許可する国コードを追加
```
Deloy後再度googleを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/f0d72d57-e570-4045-197e-8ec99f66aaff.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185852/cb58996f-af04-957b-af7a-2800e92f4215.png)

OKそう！

## 終わりに
今後もちまちまとブログ記事とブログ自体の更新を続けていきたいと思います。