-
-
Save aktaumag/4e036bff9cd32a74dc267800091e2c65 to your computer and use it in GitHub Desktop.
Обеспечение корректной обработки If-Modified-Since имеет чрезвычайно важную роль, если мы боремся за органический трафик. |
Плагин для добавления заголовков к постам Wordpress: https://wordpress.org/plugins/last-modified-and-if-modified-since-headers/
Заметка
Чтобы в PHP получить заголовок запроса
в .htaccess прописываем правило
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
</IfModule>
А потом уже в самом PHP получаем значения переданные в запросе и возвращаем либо сайт, либо 304 ответ
$_SERVER['HTTP_IF_MODIFIED_SINCE']
и $_SERVER['HTTP_IF_NONE_MATCH']
Примерный пример (чужой код)
function caching_headers ($file, $timestamp) {
$gmt_mtime = gmdate('r', $timestamp);
header('ETag: "'.md5($timestamp.$file).'"');
header('Last-Modified: '.$gmt_mtime);
header('Cache-Control: public');
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] == $gmt_mtime || str_replace('"', '', stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])) == md5($timestamp.$file)) {
header('HTTP/1.1 304 Not Modified');
exit();
}
}
}
caching_headers ($_SERVER['SCRIPT_FILENAME'], filemtime($_SERVER['SCRIPT_FILENAME']));
Письмо хостеру или сисадмину (переделанное).
Добрый день!
Домен: (указать домен)Проверяю логотип: (ссылка на логотип)
На этом ресурсе: https://last-modified.com/ru/if-modified-since.html
Получаем ошибку: (скриншот)Для исправления ситуации в конфигурации Nginx нужно прописать настройку: if_modified_since before; для всех статических файлов.
Должно получиться примерно так:
# Static files location location ~* ^.+\.(jpg|jpeg|gif|swf|png|avif|webp|ico|mp3|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|avi|ppt|txt|tar|mid|midi|wav|bmp|rtf|wmv|mpeg|mpg|mp4|m4a|spx|ogx|ogv|oga|webm|weba|ogg|tbz|js|7z|woff|woff2|ttf|svg|iso)$ { # ... тут могут быть ещё и другие настройки для статических файлов if_modified_since before; }
Можете ли вы это сделать?
Или можете подсказать где/как я могу самостоятельно прописать эту настройку?
Если это хостинг nic.ru (RU-CENTER), то техподдержка не помогает даже для статических файлов, но можно перевести сервер в ручной режим управления и самому настроить конфигурацию Nginx.
Инструкция — https://www.nic.ru/help/nastrojka-sajta-kodirovka-perenapravlenie-logi-i-dr_6760.html#p6
Ищем в файле код:
Добавляем в список локации
woff2
и прочие недостающие форматыИ добавляем туда
if_modified_since before;
и заодноexpires 365d;
для кеша в браузере.Нужно чтоб получилось так:
Пример пути к файлу настроек:
/etc/nginx/vhosts/sites-enabled/site.ru.site.conf
/home/login/etc/nginx/site.ru.conf
/home/login/etc/nginx/sites-enabled/site.ru.site.conf
После внесения изменений в конфигурационные файлы Nginx достаточно перезапустить только Nginx, а не весь сервер.
Команда:
systemctl restart nginx