なぜかYandexのボットが謎のURLにアクセスしてくるからクロール制御をしたいと思ってYandex Webmasterへ登録しました。
ところが、Yandexからページのデータがダウンロードできない状態に・・・
メッセージは「Missing page content」と表示されておりレスポンスボディがないって事らしい。
サーバーログでは送信バイトもでているからコンテンツデータの転送をしている事になってるけれど、Yandexの受信は0バイト。
gzipの展開に失敗しているか?と思ってYandexだけgzipを切ってもダメ。
CSPなどのセキュリティヘッダーがダメなのか?と考えて、Yandexにだけ出力しないようにしてもダメ。
Google先生にきいても全然情報がなくてダメ、Yandexで検索してもダメ。
じゃあなんなの?
まさかドメインがダメなのか?と思って、Freedomから無料ドメインをゲットしてきて割り当てたらすんなりとダウンロードしてくれました。
これにはビックリしましたが気を取り直して、wolfs.jpドメインと無料ドメインの違いを挙げてみました。
・DNSサーバーが違う
・TLDがjpとml
・ドメイン名が普通のドメインとPunycode
・SSLありとなし
違いはこんな所。
とりあえず、簡単に検証できるSSLありとなしを試してみたところ、SSLなしのページではちゃんとダウンロードできました。
まさかの一発ヒット!
Yandexの検索ではSSLページはダメなのか?と思ったけど、GETリクエスト自体はできてきるのでSSL通信自体は問題ないよう。
ならHTTP2かな?ってことで試しにHTTP2からHTTP1.1にしてみたところ、SSLでもページをダウンロードしてくれた。
と言うことで、YandexはHTTP2に対応していないようです。
YandexだけHTTP2を使わないようにするにはApacheの設定へこれを追加すればOK。
BrowserMatch "^Mozilla\/5\.0 \(compatible; Yandex" no_http2 Header unset Upgrade env=no_http2
BrowserMatchはYandexだけで良いかもだけどYandexだけだと何か違う物も無効化してしまいそうだったので、Mozilla~Yandexまでを判定材料にしました。
Missing page contentで困ってるWebマスターさんはYandexのみHTTP2の無効化を試してみてくださいー
コメント
コメントフォームへ