ひとりで頑張るSEO担当者さんの悩みに答える本連載。今回の質問は「GoogleはDB型サイトのフォームを送信したり、キーワード検索の検索結果をインデックスしたりすることはありますか?」です。この回答は「Googleはフォームを送信しますし、その結果として返されたページをインデックスすることがあります」です。
Googlebotはフォームを送信する
今回の質問もまたまたDB型サイトの話題で「Googlebotはフォームを送信するか」というものです。ペンネーム「くざえもん」さんが寄せてくださいました。初歩的な質問のようにみえますが、実は非常に奥が深い質問です。
結論から言うと「非常に限られた条件下ではフォームを送信し、その結果をインデックスすることがある」です。Googlebotが送るリクエストはGETが中心ですが、条件によってはPOSTも送るそうです。これは旧ウェブマスターブログに投稿された2011年の記事「クローラが POST リクエストにも対応しました」に説明があります。
上記の記事やその後に発表された情報によれば、GETリクエストは問題なく送信し、POSTリクエストは単純なものであれば送信します。POSTリクエストを送信することがある単純なものとは次のようなものです。
- ページの読み込みと同時に実行されるJavaScriptがPOSTリクエストを送ってページの内容を外部から取り込んだり、または別のURLにリダイレクトしたりする場合
- 言語や地域を切り替えるためのプルダウンメニューや、ラジオボタンで選択するだけ、のような単純なものの場合
POSTリクエストで外部リソースを読み込むウェブページが外部リソースごとインデックスされたり、ドリルダウン検索の検索結果がインデックスされたりすることがあるのは、上記のようなGooglebotの動作によるものです。2010年頃からもう10年以上もこの仕様で動いているわけですが、それでもPOSTリクエストの送信結果がインデックスされることは珍しく、このような動作に頼った実装はすべきではありません。
サイト側でクロールを制御する
このようにGooglebotは、GETリクエストもPOSTリクエストも(ただしこちらは単純なものだけ)送信しますし、その結果として返されたページをインデックスもします。ただしこれは確実なことではありません。フォームの送信結果をインデックスさせたい場合も、インデックスさせたくない場合も、どちらもサイト運営側できちんと制御しておくのが無難です。
インデックスさせたい場合なら、パラメーターを通常のリンクで渡す形にするのと同時に、重複コンテンツの発生を最小限に抑えるように設計・実装します。あとは十分にPageRankが高ければ、多くのページがインデックスされます。インデックスさせたくない場合なら、フォーム送信後のURLをrobots.txtで除外設定しておくのが確実です。
まとめ
Googlebotがフォームを送信する、POSTリクエストも送信する、とは言っても、Googlebotがお問い合わせフォームを送信したり、匿名掲示板に書き込んだりすることはありません。あくまでも「Google検索のユーザーにとって重要な情報がフォームの送信先にありそうな場合」という限定的な条件下でだけ起きることで、しかもフリーワードで検索するような複雑な操作はしません(少なくとも現時点では)。
こうした事情をふまえてサイト運営側では、Googlebotが迷わなくて済むように、あらかじめクロールを制御しておくことが重要です。ごく簡単に言えば「インデックスさせたいなら静的サイトと同じように操作できるように実装し、インデックスさせたくないならその領域をrobots.txtで拒否する」です。今回の質問はとっても面白かったですね。ペンネーム「くざえもん」さん、ありがとうございました。
※このコンテンツはWebサイト「Web担当者Forum - 企業Webサイトとマーケティングの実践情報サイト - SEO・アクセス解析・SNS・UX・CMSなど」で公開されている記事のフィードに含まれているものです。
オリジナル記事:Googlebotはフォーム送信する? 条件によってはします | ひとりSEO担当者の疑問に答えます
Copyright (C) IMPRESS CORPORATION, an Impress Group company. All rights reserved.