For et par dage siden stoppede billeder fra et websted, som jeg vedligeholder, ikke med at blive vist i Gmail. Googles Image Cache Proxy returnerer 404 på hvert billede. Jeg kan bekræfte, at de er tilgængelige på selve serveren, og at nyhedsbrevet vises fint uden for gmail.com, selv i Gmails egen mobilapp (det bruger tilsyneladende ikke Google Image Proxy). Jeg kan endda bekræfte, at Googles bot henter disse billeder regelmæssigt fra selve serveren, hvor serveren svarer på status 200 og sender billedet. De pågældende billeder er png og jpg, ingen svgs (som synes at have haft problemer tidligere ifølge min forskning)
Er der et kendt middel til dette, og hvorfor er Google dette onde? Er der et specielt header, der skal indstilles til dette? Ligesom Cache-Control-header, der kræves af deres Image Proxy specifikt?
Svar
PHP-applikationen serverede et beskadiget billede, når den forkert håndterede Accept-Language-header, som Google Bot sender. Samme forkert håndtering skete, når der ikke blev sendt ekstra overskrifter til siden.
På den side, hvor der skulle være et billede, var der en meddelelse, der sagde:
Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/myweb.com/public/constants.php on line 3
Meddelelsen rapporterer en 200 HTTP-status, hvorfor jeg ikke kunne fange den med det samme. Google Bot hentede den dog som et ugyldigt billede og gentog igen angav en 404-fejl.
Jeg løste det ved at installere php-intl -pakke.