検索のインデックスに載せたい → サイトマップを登録する
やりたいこと
- Google の検索に載るようになってほしい
- クローリングしてくれるように明示する
前提
- ✔️ ドメインの所有権の確認 が済んでいること
1. Google Search Console > サイトマップ登録
- 該当ドメインを選択
- 左メニューから「インデックス作成 > サイトマップ」を選択
- sitemap.xml のURLを貼り付ける
SSG (Docusaurus) が自動で作ってくれていたりする
例:
たとえば watashino.sugoi-domain.com
にサイトを作成しているなら、こう。
https://watashino.sugoi-domain.com/sitemap.xml
2. Google Search Console > 登録されたか確認
→ サイトマップの登録から1日程度 開けて、以下を確認
- 該当ドメインを選択
- 左メニューから「インデックス作成 > ページ」を選択
→ 「インデックス登録されたページ数」や「除外されたページ」に出てくるそうだ
実際やった間違い
だらだら時系列に書いてしまっているので、結論だけ先に書く。
いまのところの理解まとめ
- ❌ sitemap.xml を http, https の両方のURL登録していた
- → ⭕ https のみにして、もう片方は消す
- ❌ ファイル名(正確にはURL)に "." が入っていた
- → ❌ CloudFront のせいか クローラが 403 Error Forbidden に
- → ⭕ kebab-case などにす
- ❌ 「一部エラーでも他のページは順次クロールされる」と誤解していた
- → ❌ 違った。クローラはそこで止まって諦めていた
- → ⭕ 先延ばしにせずさっさとファイル名を直す
- → ⭕ もっというと npm run の 前処理でチェックをいれる
時系列の経過は折りたたむ。
泥臭い経緯
1. 間違った登録状態
- 本来、https が表示されるように S3 + CloudFront で設定していた(たぶん)のだが
- 誤って http の方を登録してしまっていた。その際、エラー出たので https と両方登録しておいた。
この状態になってた
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 への転送が良くないのかと思って調べた。以下のように確認
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
が出る
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 のような数字で始まるものは許容したい
→ これで見つけてちくちくリネームしていこう。リネームは手動だよ
find docs -mindepth 2 | grep -vE '.*/(?:[0-9]+\.)?[^\.]+(?:\.md)?$' | grep -vE '(_category_.json|.DS_Store|tags.yml)'
→ ついでに、日本語(非ASCII)入ってるやつも駆逐しよう
find docs -type f | grep '[^ -~]'
→ ついでに、大文字と、カンマとか '+' とかカッコとか、も除外しておこう
find docs -type f | grep '[,A-Z\(\)\+]' | grep -vE '(.DS_Store)'
→ npm run に含めてしまっても良さそうですな。1個でもあったら 非0 で抜ける