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

このブログでは、フリーランスエンジニアとしての実体験から、フリーランスエンジニアに関するノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

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

※提携先広告(リンク、バナー等)やAI生成文を含む場合があります


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


このブログでは、

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

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


今回は、


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


についてです。


この記事の結論3行まとめ

  • 原因はBing側のping API endpoint (`bing.com/webmaster/ping.aspx`)が2021年12月に廃止されたこと
  • 解決策はSitemapGenerator::Sitemap.createの`search_engines`オプションで送信先URLを`webmasters/submiturl?siteUrl=%s`に変更
  • 変更後`rake sitemap:refresh`でGoogleとBingの両方のping送信が成功する

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

sitemap_generator gemのBing pingエラー(410 Gone)は、送信先URLをwebmasters/submiturl?siteUrl=%sに変更すれば解決します(2026年5月時点)。





エラーの概要は何が起きている?


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

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


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

Pinging with URL &#39;https://s3-ap-northeast-1.amazonaws.com/sitemaps/sitemap.xml.gz&#39;:
  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.

引用元 => Bing 410 Gone [#3255714] | Drupal.org


これは現在の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 &#39;ページのURL&#39;
end


  • sitemap_generator

github.com


github.com


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

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


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

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


以上です。




よくある質問

`sitemap_generator` gemのバージョン依存性はある?
`search_engines`オプションはLinkSet#initializeで受け取れるため、バージョンに依存しません。GitHubのlib/sitemap_generator/link_set.rb L123-L134で実装確認できます。
Google側のping URLも変更が必要?
Google側は従来通り`www.google.com/webmasters/tools/ping?sitemap=%s`で問題ありません。本記事の解決策ではGoogleの送信先URLはデフォルト値を引き続き指定しています。
PR #386が出ているのに動かないのはなぜ?
PR修正後もBing側のAPI endpoint廃止(410 Gone)はgem側で対処できず、利用者がインスタンス生成時に新しい送信先URLを上書き指定する必要があります。