Index Now で検索エンジンにページ更新通知を行う
Index Nowとは、検索エンジンのMicrosoft Bing、Yandex、Seznam.cz、Naverなどが採用している、ウェブサイト上でコンテンツが作成、更新、削除されたときに、検索エンジンにリクエストを送信するモジュール(仕組み)。通常、検索エンジンはサイト上のサイトマップ(xml)を読み取ってサイト内をクロールして、その結果をインデックスするんですが、クロールの頻度にはばらつきがあって、せっかく新しい有意義なページを作っても検索エンジンのクロールが遅いとなかなか検索結果に反映されません。
でもこのIndex Nowを利用すれば、検索エンジンのクローラーの自動巡回を待たずにクロールをリクエストできるので、サイトマップを作って待つだけよりも非常に早くページのインデックス化が期待できます。
IndexNowの通知はWordPressなどではプラグインがあって簡単に導入できるのですが、私のようにWordPressを使ってない自作ウェブサイトでは、自分でプログラムを組んで検索エンジンに通知する、もしくは通知用URLにアクセスして通知させる必要があります。
そこで今回は、IndexNowのモジュールを使って、Microsoftの検索エンジン「Bing」にページの更新通知を行うPHPサンプルコードを紹介。IndexNowの通知を自分でやりたい人は参考にどうぞ。
IndexNow 検索エンジンBingにページ更新通知を行うPHP
APIキーをサイトルートに置いたら、あとはPHPコードなどを使ってページの更新通知を行います。そのときに使える「IndexNowで検索エンジンBingにページ更新通知を行うPHPサンプルコード」は下記となります。
function bingnow($urls){
if(is_string($urls)){
$urls=[$urls];
}
$post="https://www.bing.com/indexnow";
$seachengine="www.bing.com";
$key="yourAPIKey"; //APIキー
$site="yoursite.com"; //サイトのトップURL
$param=[
'host'=>$site,
'key'=>$key,
'keyLocation'=> "https://".$site."/".$key.".txt",
'urlList' => $urls
];
$header=['Content-Type: application/json; charset=utf-8','Host: '.$seachengine];
$opt=[
'http' => [
'method'=>'POST',
'header' => implode("\n",$header),
'content' => json_encode($param),
'ignore_errors' => true,
'protocol_version' => '1.1'
]
];
file_get_contents($post, false, stream_context_create($opt));
$statusCode = http_response_code();
return $statusCode;
}
このPHPサンプルコードは一番簡単な file_get_contents 関数でRequest header を付けてBingのindexnowを読み込んで、ページ更新通知を送るものになっています。
$key にはサイトトップに置いたAPIキーを、$site には自分のサイトドメイン(www.example.comなど。https://部分は入れない)を設定してください。
関数の変数 $urls には更新通知をしたいページURlを入れれば単独ページを更新通知してくれますが、配列形式で複数のURLを入力すれば複数ページをまとめて更新通知を送ってくれ、更新通知が終わったら、最後に http レスポンスコードを返してくれます。
単純なプログラムになっているので、直感的にもわかりやすいと思うので、あとは自由に使いやすいようにカスタマイズしてください。