新しく記事を書いたときなど、サイトのコンテンツを検索エンジンに反映させたいのであれば、Googleなどの検索エンジンに更新を通知をする必要があります。
XML形式でサイトマップを用意したあと、ping通信を使って検索エンジンに通知するんですね。
この記事では例としてPHPを使ったGoogleにサイトマップを通知する方法をまとめました。
WordPressサイトでも役立てていただけると思います。
ping通信を使ったGoogleへの通知
ping通信とは、もともとネットワーク診断プログラムの一種です。
所定のプロトコル(決まりごと)に沿って、正しくネットワークと接続できているかを確認できます。
この仕組みを使い、Googleなどの検索システムへXML形式サイトマップの更新を通知することも可能です。
具体的には、下記のURLへGETリクエストを送信すればよいです。
https://www.google.com/ping?sitemap=サイトマップURL
たとえば、サイトマップを以下のURLで用意したとします。https://sample.com/sitemap.xml
その場合、通知するためのURLは以下です。
https://www.google.com/ping?sitemap=https://sample.com/sitemap.xml
試しにブラウザで用意したURLにアクセスしてみます。
Googleからサイトマップがクロール対象として登録されたことがわかります。
PHPを使ってサイトマップの更新を通知する
先ほどは直接ブラウザにURLを入れてGoogleに通知しましたが、今度はPHPを使ってプログラム側からGoogleに通知をしてみます。
GETリクエストを送信する必要があるので、cURLを使ってみましょう。
最終的に作られたコードは以下です。
//curlセッションを開始する
$ch = curl_init();
//通信時のオプションを設定する
$url = "https://www.google.com/ping?sitemap=サイトマップURL";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
//データを送信する
$data = curl_exec($ch);
//curlセッションを終了する
curl_close($ch);
//結果を出力
echo $data;
結果としてSitemap Notification Received
と表示されれば通知完了です。
cURLのオプションとして設定したものを詳しく見ていきます。
CURLOPT_URL
$url = "https://www.google.com/ping?sitemap=サイトマップURL";
curl_setopt($ch, CURLOPT_URL, $url);
ping通信でサイトマップ通知を受け取ってくれるURLを指定しています。
もちろんサイトマップURL
の部分は実際のURLに合わせて書き換えてください。
CURLOPT_CONNECTTIMEOUT
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
cURLで接続したときにタイムアウトするまでの時間を2秒で設定しています。
CURLOPT_FOLLOWLOCATION
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
サーバーがHTTPヘッダの一部としてリダイレクト先を指定してきたら遷移するようにしています。
CURLOPT_RETURNTRANSFER
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec()
の戻り値が文字列となるようにしています。
CURLOPT_HEADER
curl_setopt($ch, CURLOPT_HEADER, TRUE);
HTTPヘッダの中身も出力するようにしています。
まとめ
サイトマップをGoogleに通知して新しいコンテンツを検索結果にのせてもらうようにするコードは、意外と簡単であることがわかったと思います。
pingなどという少しわかりにくい概念が登場してはいるのですが、PHPのコード自体はシンプルなのでぜひWordPressサイトの更新通知などにも生かしていってください。
コメント