Před několika dny se v Gmailu přestaly zobrazovat obrázky z webu, který udržuji. Google Image Cache Proxy vrací 404 na každý obrázek. Mohu potvrdit, že jsou přístupné na samotném serveru a zpravodaj zobrazuje mimo gmail.com dobře, dokonce i ve vlastní mobilní aplikaci Gmailu (zjevně nepoužívá Google Image Proxy). Dokonce mohu potvrdit, že robot Google načítá tyto obrázky pravidelně ze samotného serveru se serverem reagujícím na stav 200 a odesílajícím obrázek. Dotyčné obrázky jsou png a jpg, žádné svg (které, jak se zdá, měly v minulosti problémy) podle mého výzkumu)
Existuje na to známý lék a proč je Google tak zlý? Existuje pro to speciální záhlaví? Jako záhlaví Cache-Control, které vyžaduje jejich Image Proxy konkrétně?
Odpověď
Aplikace PHP poskytovala poškozený obrázek při nesprávném zpracování záhlaví Accept-Language, které odesílá Google Bot. Totéž při odesílání žádných dalších záhlaví na stránku nedošlo k nesprávnému zacházení.
Na stránce, kde měl být obrázek, bylo upozornění:
Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/myweb.com/public/constants.php on line 3
Oznámení hlásí stav 200 HTTP, což je důvod, proč jsem jej nemohl hned zachytit. Google Bot jej však načetl jako neplatný obrázek a následně repo rted a 404 error.
Vyřešil jsem to instalací balíčku php-intl .