拡張utf-8文字を含むハッシュバンURLがあります。例えば:
https://example.com/#!каталог
Bingボットはhtmlスナップショットを取得します https://example.com?_escaped_fragment_=каталог エンコードされたURLとして\xD0\xB0...
。サーバーはそのために400エラーで応答しました。パーセントでエンコードされたURLのみを受け入れます。 %D0%B0...
は200 OKステータスを取得します。
この問題を解決するにはどうすればよいですか?
ボットのクロールに使用する前に画像名をエンコードする必要があります。つまり、画像の名前はページのソースコードで%2F%D0%B7%D1%83%D1%80%D0%B0%D0%B3.jpg
である必要があります。最新のブラウザはすべてそれをデコードし、ユーザーに対してUTF-8文字を人間に優しい方法で表示します。
したがって、ソースコードに含める前に、サーバー側のエンコードを行い、これらすべての文字をエンコードします。
このウィキペディアページのソースコードを表示すると、次のことを理解できます。 https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80% D0%B0%D0%BC%D0%BC%D0%B0_%D1%80%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D1%8F_%D0% 9E%D0%9E%D0%9D
更新:Webサイトおよび他のStackExchangeユーザーのコメントを詳細に検討した結果に基づきます。 WebサイトとXMLサイトマップですべてのURLをエンコードする必要があるようです。 Webサイトでは、エンコードされたURLもXMLサイトマップのエンコードされたURLもありません。どこでもUTF-8でエンコードされたURLを使用してください。 BingbotはGooglebotの背後にあり、最近になってJSベースのWebサイトをより広範囲にレンダリングし始めたことに留意してください。非ASCII文字を使用すると、Bingbotのバグが発生する可能性があります。
ソースコードとDOM、およびXMLサイトマップのURLは、例に基づいて次のようにエンコードする必要があります。
https://example.com/#!%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3
適切なサイトマップエンコーディングの詳細については、こちらをご覧ください。 https://www.sitemaps.org/protocol.html#escaping
おそらく、<img>
htmlタグのurlencode
画像src
属性が必要です。