こんにちは、現役沖縄フリーランスエンジニアの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
- 【PR】Strobilomyces/update bing #386
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ウェブマスターツールを見にいきました。
URL送信のタブを選択してアドレスバーを見ると、
http://www.bing.com/webmasters/submiturl?siteUrl=
というようなURLが出ていますが、
現在SitemapGeneratorのインスタンスのパラメータに指定されているURLとは相違しているため、
おそらくこれがエラーの原因です。
# 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
この状態で再度 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
以上です。