Kilka dni temu obrazy z witryny, którą utrzymuję, przestały być wyświetlane w Gmailu. Serwer proxy pamięci podręcznej obrazu Google zwraca 404 na każdym obrazie. Mogę potwierdzić, że są one dostępne na samym serwerze, a biuletyn wyświetla się dobrze poza gmail.com, nawet w aplikacji mobilnej Gmaila (najwyraźniej nie używa Google Image Pełnomocnik). Mogę nawet potwierdzić, że bot Google regularnie pobiera te obrazy z samego serwera, a serwer odpowiada statusowi 200 i wysyła obraz. Obrazy, o których mowa, to png i jpg, bez svg (które wydają się mieć problemy w przeszłości według moich badań)
Czy istnieje znane lekarstwo na to i dlaczego Google jest tym złym? Czy istnieje specjalny nagłówek, który powinien być ustawiony na to? Podobnie jak nagłówek Cache-Control wymagany przez ich serwer proxy obrazu konkretnie?
Odpowiedź
Aplikacja PHP wyświetlała uszkodzony obraz podczas nieprawidłowej obsługi nagłówka Accept-Language, który wysyła Google Bot. To samo wystąpiła niepoprawna obsługa podczas wysyłania dodatkowych nagłówków do strony.
Na stronie, na której miał znajdować się obraz, znajdowała się informacja:
Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/myweb.com/public/constants.php on line 3
Powiadomienie zgłasza stan HTTP 200, dlatego nie byłem w stanie go od razu złapać. Jednak Google Bot pobrał go jako nieprawidłowy obraz i z kolei repozytorium rted a 404 error.
Rozwiązałem go, instalując pakiet php-intl .