[[SEOめも]] この内容は「Google ウェブマスター向け公式ブログ」の[[XML サイトマップと RSS/Atom フィードのベストプラクティス:http://googlewebmastercentral-ja.blogspot.jp/2015/02/best-practices-for-xml-sitemaps-rssatom.html]]を参考に書いています。 GoogleにURLを通知する方法は大きく分けて3つあると思われます。~ 他にもありますが、以下の3つを併用すると素早く且つ全てのURLをインデックスしてもらえると思います。 -ウェブマスターツールからサイトマップを送信する -ウェブマスターツールからRSSフィードを送信する -PubSubHubbubを利用する 順に説明します。 *ウェブマスターツールからサイトマップを送信する [#b2e25466] SEOを意識している人ならすでに実行されておられることでしょう。~ xml形式で記述するアレです。~ 探せばいくらでも情報はあるので、ここでは書きません。 サイト内でインデックスして欲しいリストを全て記述します。 サイトマップは適当な間隔でGoogleさんが再取得してくれますが、こちらから更新したことを通知するにはウェブマスターツールにログインして再送信することで可能になります。~ この作業をせずにGoogleにpingを送信することで更新を通知することができるようになります。 **ping送信先とphpによる送信方法 [#ha0184cb] Google向けping送信先 http://www.google.com/webmasters/sitemaps/ping?sitemap=[urlエンコードしたURL] Bing向けping送信先 http://www.bing.com/webmaster/ping.aspx?siteMap=[urlエンコードしたURL] 上記にアクセスすればいいだけですが、もうちょっとカッコよくやります。 <?php $conn = curl_init(); curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, 2); // 試行待ち時間 curl_setopt($conn, CURLOPT_FOLLOWLOCATION, 1); // Locationヘッダをたどる curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1); // curl_exec() の返り値を文字列で返す curl_setopt($conn, CURLOPT_HEADER, TRUE); // ヘッダの内容も出力 #curl_setopt($conn, CURLOPT_USERAGENT, $user_agent); // USER_AGENTを設定 curl_setopt($conn, CURLOPT_URL, $url); // ping送信先URL $res = curl_exec($conn); curl_close($conn); $resの内容をゴニョゴニョしてやれば成功したかどうかは判別できます。 *ウェブマスターツールからRSSフィードを送信する [#pa07b941] xml形式のサイトマップを送信してはいても意外にRSS形式を登録していない人は多いかもしれません。~ もしかするとRSS形式を登録できることを知らない人もいるかもしれません。 サイトマップにはサイト内でインデックスして欲しいリストを全て記述します。~ しかし、Googleからの更新頻度は高く無く、新たにURLを追加してインデックスして欲しい場合はもどかしいです。~ それを解消するために新しいURLだけをRSS形式で別途書き出し、ウェブマスターツールに登録しておくとより早くインデックスしてもらえそうです。~ おそらくインデックスはされていても、ページの内容を更新したので、インデックスし直して欲しい場合も効果がありそうです。~ GoogleはサイトマップよりもRSSフィードの方が更新頻度が高いようなので、サイトマップとRSSフィードの両方を送信することを推奨しています。 こちらの更新通知もpingが利用すればなお良しですね。 こちらの更新通知もping送信すればなお良しですね。 *PubSubHubbubを利用する [#se60fda8] RSSフィードを登録しておいても結局は受け身になります。~ さらに早くインデックスして欲しいところなので、PubSubHubbubを利用すると能動的にプッシュ通知をすることが可能になります。 **WordPressを利用している場合 [#wcb2c91d] WordPressを利用しているのであればプラグインで利用が可能になるようです。~ [[PubSubHubbub:https://wordpress.org/plugins/pubsubhubbub/]] /wp-content/plugin/ 以下に pubsubhubbub.1.6.5.zip をダウンロード $ unzip pubsubhubbub.1.6.5.zip $ rm -f pubsubhubbub.1.6.5.zip プラグインを有効化すると、WordPressの管理画面の設定メニューにPubSubHubbubが表示されます。~ デフォルトで以下の2つが登録されていました。~ これで特にすることは無いようです。 http://pubsubhubbub.appspot.com http://pubsubhubbub.superfeedr.com **WordPressを利用していない場合 [#gf8c9207] WordPressを利用していない場合はPHPにて実現できます。 [[pubsubhubbub-php:https://github.com/joshfraser/pubsubhubbub-php]] pubsubhubbub-php-master.zip を解凍するとlibrary内に publisher.php が入っているのでこれを利用します。 <?php require_once('publisher.php'); // 通知先 Googleの場合のURL $hub_url = 'http://pubsubhubbub.appspot.com/'; // インデックスさせたいURL $topic_url = 'http://example.com/'; $p = new Publisher($hub_url); if($p->publish_update($topic_url)){ echo '通知が成功しました'; } else { echo '通知が失敗しました'; } これだけです。~ 簡単すぎて本当に通知できているのか心配になります。 *まとめ [#s3c66662] -サイトマップには全てのURLを記述し、更新があればping通知 -RSSフィードには新規・更新のURLを記述し、更新があればping通知 -新規のURLはPubSubHubbub利用でいち早く通知