スリ飯屋MaLankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【sitemap_generator】Ping failed for Bing: #<OpenURI::HTTPError: 410 Gone> not working【Ruby gem】


こんにちは、現役沖縄フリーランスエンジニアのmahです。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


  • 【sitemap_generator】Ping failed for Bing: #<OpenURI::HTTPError: 410 Gone> not working【Ruby gem】


についてです。


【sitemap_generator】Ping failed for Bing: #<OpenURI::HTTPError: 410 Gone> not working【Ruby gem】





エラーの概要


gem sitemap_generator でサイトマップを作成していましたが、

ping送信時に Ping failed for Bing: #<OpenURI::HTTPError: 410 Gone> というエラーになっていることに気づきました。


 $ be rake sitemap:refresh
In '/Users/xxx/workspace/ccc/vvv/':
+ sitemaps/sitemap.xml.gz                                 15 links /  561 Bytes
Sitemap stats: 15 links / 1 sitemaps / 0m01s

Pinging with URL 'https://s3-ap-northeast-1.amazonaws.com/sitemaps/sitemap.xml.gz':
  Successful ping of Google


Ping failed for Bing: #<OpenURI::HTTPError: 410 Gone> (URL http://www.bing.com/webmaster/ping.aspx?sitemap=https%3A%2F%2Fs3-ap-northeast-1.amazonaws.com%2Fsitemaps%2Fsitemap.xml.gz)


エラーになっているのはBingだけで、

googleの方は正常に送信できている様子。


Ping failed for Bing: #<OpenURI::HTTPError: 410 Gone>

で調べているとIssueやPRが出ていました。


  • 【Issue】Ping failed for Bing: #<OpenURI::HTTPError: 410 Gone> #391

github.com


  • 【PR】Strobilomyces/update bing #386

github.com


PRを見た感じ修正されているようですが動いていません。


もう少し見ていると、

2021年の12月にBingのping送信が廃止された?というような情報もありました。


Sometime between December 14th and 22nd, Bing stopped accepting new ping submissions to its XML Sitemap Ping service. The API endpoint at bing.com/ping now returns an HTTP 410 Gone error message.

引用元 => https://www.drupal.org/project/simple_sitemap/issues/3255714


これは現在のBingのping送信先URLを確認した方が早そうなので、

Bingウェブマスターツールを見にいきました。


www.bing.com


URL送信のタブを選択してアドレスバーを見ると、

http://www.bing.com/webmasters/submiturl?siteUrl=

というようなURLが出ていますが、

現在SitemapGeneratorのインスタンスのパラメータに指定されているURLとは相違しているため、

おそらくこれがエラーの原因です。


bing ウェブマスターツール ping送信先 url.jpg


# SitemapGeneratorで設定されている、検索エンジン毎のping送信先URL

[4] pry(main)> SitemapGenerator::Sitemap.search_engines
=> {
  :google=>"http://www.google.com/webmasters/tools/ping?sitemap=%s",
  :bing=>"http://www.bing.com/webmaster/ping.aspx?sitemap=%s" <===== 先ほど見たウェブマスターツールのURLとは違う
}




解決策


SitemapGeneratorのインスタンスのBingのping送信先URLを、

http://www.bing.com/webmasters/submiturl?siteUrl=」 に変更すれば上手くいきそうです。




確認


gem sitemap_generatorのソースを見ていると、

SitemapGenerator::Utilitiesというクラスをオプションにしてping送信先を指定できるようなので、

試しにSitemapGenerator::Sitemapのインスタンスを作る際の引数に当ててみます。

SitemapGenerator::Sitemap.create({ search_engines: { google: "http://www.google.com/webmasters/tools/ping?sitemap=%s", bing: "http://www.bing.com/webmasters/submiturl?siteUrl=%s" } }) do
  add 'ページのURL'
end


  • sitemap_generator

github.com


github.com


この状態で再度 rake sitemap:refresh を実行すると、

GoogleもBingでもping送信できました。


$ be rake sitemap:refresh
In '/Users/xxx/workspace/ccc/vvv/':
+ sitemaps/sitemap.xml.gz                                 15 links /  561 Bytes
Sitemap stats: 15 links / 1 sitemaps / 0m01s

Pinging with URL 'https://s3-ap-northeast-1.amazonaws.com/sitemaps/sitemap.xml.gz':
  Successful ping of Google
  Successful ping of Bing


以上です。