Skip to main content

検索のインデックスに載せたい → サイトマップを登録する

やりたいこと

  • Google の検索に載るようになってほしい
  • クローリングしてくれるように明示する

前提

1. Google Search Console > サイトマップ登録

  1. 該当ドメインを選択
  2. 左メニューから「インデックス作成 > サイトマップ」を選択
  3. sitemap.xml のURLを貼り付ける
sitemap.xmlのURLは?

SSG (Docusaurus) が自動で作ってくれていたりする

例:
たとえば watashino.sugoi-domain.com にサイトを作成しているなら、こう。

txt
https://watashino.sugoi-domain.com/sitemap.xml

2. Google Search Console > 登録されたか確認

→ サイトマップの登録から1日程度 開けて、以下を確認

  1. 該当ドメインを選択
  2. 左メニューから「インデックス作成 > ページ」を選択

→ 「インデックス登録されたページ数」や「除外されたページ」に出てくるそうだ

実際やった間違い

だらだら時系列に書いてしまっているので、結論だけ先に書く。

間違っていたこと+対策すること

いまのところの理解まとめ

  • sitemap.xml を http, https の両方のURL登録していた
    • https のみにして、もう片方は消す
  • ファイル名(正確にはURL)に "." が入っていた
    • CloudFront のせいか クローラが 403 Error Forbidden に
    • kebab-case などにす
  • 「一部エラーでも他のページは順次クロールされる」と誤解していた
    • 違った。クローラはそこで止まって諦めていた
    • 先延ばしにせずさっさとファイル名を直す
    • もっというと npm run の 前処理でチェックをいれる

時系列の経過は折りたたむ。

泥臭い経緯

1. 間違った登録状態

  • 本来、https が表示されるように S3 + CloudFront で設定していた(たぶん)のだが
  • 誤って http の方を登録してしまっていた。その際、エラー出たので https と両方登録しておいた。

この状態になってた

txt
http://watashino.sugoi-domain.com/sitemap.xml
https://watashino.sugoi-domain.com/sitemap.xml

2. 直してみる

3日程度経っても反映されないので、
2個あるのが誤りかなと思って http の方を削除。

3. エラー通知

この操作に関連してか不明だが、以下のようなメールが Google から来る

サイト watashino.sugoi-domain.com のサイトマップ内のページがインデックスに登録されない新しい要因
アクセス禁止(403)が原因でブロックされました

→ これは、「いままで進まなかった原因はこれ」ということではなく、処理が進んで、「エラーのページがあった」と言ってるだけだった

→ このあと、Search Console の画面を見ると、登録済/未登録 が一覧できるようになった

4. 何が 403 エラー?

403エラーと出ている欄には、こんなURLが引っかかってた

memo/ios-app-dev/JSON読み込み.SwiftyJSON

→ 確かに、下の方の curl コマンドで AccessDenied と出る

→ 以下の点が怪しい

  • 拡張子風になっているせい ← たぶんこっち。CloudFront がそんな動きをするような
  • 日本語がいけない ← 半濁音なら NFC 問題を もう少し疑ってかかったが、そうでないので、関係ないかも

→ どちらかなら、/path/to/snake-case に順次変えていく予定なので問題なし。深追いしない

5. ちなみに: 確認コマンド (参考)

最初 http → https への転送が良くないのかと思って調べた。以下のように確認

bash
curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://watashino.sugoi-domain.com/sitemap.xml

301 Moved Permanently が出る

bash
curl -I -L -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://watashino.sugoi-domain.com/sitemap.xml

301 Moved Permanently のあと HTTP/2 200 が出る

→ これ自体は正常

6. 一部エラーのまま、しばらく待っていても進まない

403 Error が一部あっても、他のページは順次更新されるんでない? と、呑気に待っていたら、進まなかった。

7. ドットの入ったパスは取り除く

  • ドットの入ったパスは取り除きたい
  • しかし、04.this-is-ok.md のような数字で始まるものは許容したい

→ これで見つけてちくちくリネームしていこう。リネームは手動だよ

bash
find docs -mindepth 2 | grep -vE '.*/(?:[0-9]+\.)?[^\.]+(?:\.md)?$' | grep -vE '(_category_.json|.DS_Store|tags.yml)'

→ ついでに、日本語(非ASCII)入ってるやつも駆逐しよう

bash
find docs -type f | grep '[^ -~]'

→ ついでに、大文字と、カンマとか '+' とかカッコとか、も除外しておこう

bash
find docs -type f | grep '[,A-Z\(\)\+]' | grep -vE '(.DS_Store)'

→ npm run に含めてしまっても良さそうですな。1個でもあったら 非0 で抜ける