検索エンジン用のXMLサイトマップを作る際、私は Google XML Sitemapsというプラグインを使っています。
で、これを使っていると、日本語環境だとBingへのサイトマップ送信時にエラーが発生する事例があります。
これの解決方法ってのは至って簡単な物で、最新版の3.2.9だと
//Ping Bing if($this->GetOption("b_pingmsn") && !empty($pingUrl)) { $sPingUrl="http://www.bing.com/webmaster/ping.aspx?siteMap=" . urlencode($pingUrl); $status->StartMsnPing($sPingUrl); $pingres=$this->RemoteOpen($sPingUrl); if($pingres==NULL || $pingres===false || strpos($pingres," ")===false) { trigger_error("Failed to ping Bing: " . htmlspecialchars(strip_tags($pingres)),E_USER_NOTICE); $status->EndMsnPing(false,$this->_lastError); } else { $status->EndMsnPing(true); } }にある
if($pingres==NULL || $pingres===false || strpos($pingres," ")===false)の部分を
if($pingres==NULL || $pingres===false || strpos($pingres,'サイトマップを送信いただきありがとうございました。')===false)のように書き換えればOKでした。
(参考:日本語環境でXML Sitemap Generatorを使用するとBingへの更新通知でエラーが発生する問題の修正)
しかし、最近になってまたエラーが発生しまして、今度はこれでは解決できませんでした。
で、今度はどんな方法で解決したかっていうと
if($pingres==NULL || $pingres===false || strpos($pingres,"Thanks for submitting your Sitemap")===false)こうするだけ。
どうやら、いつの間にやらサンクスメッセージが英語になっていたようですね。
結果の詳細を覗いてみたら、送信結果にこのメッセージがあったので、もしやと思いやってみたらビンゴでした。
ちなみに、Ask.comへの送信も失敗していましたが、こちらはただのDNSエラーでしたので、送信しないように設定しました。
見る度に気になっていて、ちょっとモヤモヤしていたんですがこれでスッキリしました。
忘れないようにメモメモ。
スポンサードリンク