header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT');
P.S. Хотя все же костылем (строка выше) на локалке заголовок получил, однако костыль не нужен
Если на сервере с сайтом используется nginx, проверьте, выключен ли параметр ssi в его конфигах к вашему сайту и проверьте снова, стали ли устанавливаться заголовки
header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT');
P.S. Хотя все же костылем (строка выше) на локалке заголовок получил, однако костыль не нужен
Если на сервере с сайтом используется nginx, проверьте, выключен ли параметр ssi в его конфигах к вашему сайту и проверьте снова, стали ли устанавливаться заголовки
Сайт на shared-хостинги, писал в тп хостинга - ответили мол у них все как надо настроено. На локалке апач - и там только вот костыль отдает заголовок)
Вообщем, пошаманил над кодом, вышел такой результат: Локальный битрикс на апаче
Цитата
Cache-Control: public Connection: Keep-Alive Content-Encoding: gzip Content-Length: 1623 Content-Type: text/html; charset=UTF-8 Date: Wed, 18 Mar 2020 06:39:13 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT Keep-Alive: timeout=10, max=99 Last-Modified: Wed, 18 Mar 2020 06:31:55 GMT P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" Pragma: no-cache Server: Apache X-Powered-CMS: Bitrix Site Manager (DEMO)
Результат на битриксе, на котором необходимо решить задачу
Цитата
cache-control: no-store, no-cache, must-revalidate content-encoding: gzip content-type: text/html; charset=UTF-8 date: Wed, 18 Mar 2020 06:37:35 GMT expires: Thu, 19 Nov 1981 08:52:00 GMT p3p: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" pragma: no-cache server: nginx status: 200 strict-transport-security: max-age=31536000; x-powered-by: PHP/7.0.30 x-powered-cms: Bitrix Site Manager
Заголовка last-modified я не увидел, однако хостер говорит, мол у них nginx настроен как надо для выдачи заголовка
Цитата
На услугах виртуального хостинга, доступа к конфигурационным файлам веб-серверов нет. Со стороны веб-серверов все необходимые настройки для возможности передачи заголовков Last-Modified включены.
Настройка указанных заголовков производиться непосредственно в скриптах сайта.
Так в чем же причина? Да, кстати, код получился таким:
Провел небольшие эксперименты с "костыльной" выдачей заголовка last-modified, создал тестовую страничку в корне в 3-ех вариациях: №1
Цитата
header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT');
№2
Цитата
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT');
№3
Цитата
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php"); header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT');
№1 и №3 Заголовок отдают, а вот №2 - нет. В каком направлений искать причину?)
Пробовал, оно работает на локальном битриксе, а вот там где надо - какая-то дичь. К примеру документ такого вида заголовок там не отдает:
Цитата
<?php //require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php"); //require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php"); //require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT'); ?> <!do ctype html> <ht ml lang="en"> <head> <met a charset="UTF-8"> <met a name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <met a http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> body </body> </html>
А на локалке отдает. А вот если убрать все вот это:
Цитата
<!do ctype html> <ht ml lang="en"> <head> <met a charset="UTF-8"> <met a name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <met a http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> body </body> </html>
И оставить только это:
Цитата
<?php //require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php"); //require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php"); //require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); header('Last-Modified: '.gmdate('D, d M Y H:i:s'). ' GMT'); ?>
То отдает. В итоге я вообще без понятия где теперь искать проблему ;D P.S. Твой метод из ядра D7 я пробовал, неплохо так, но мои эксперименты показывают, что тут ведь явно проблема не в том, как отдавать заголовок, через метод ядра D7 или простой header(..
Все же у меня очень большие подозрения в сторону того, что что-то не так с сервером, разместил этот файлик на своем vds где работает apache + nginx и там заголовок без проблем отдается, хоть и нет никакого битрикса.
Вообщем проблема решилась, как я и предполагал дело было в ssi, однако здесь есть и мой косяк - не знал я что в настройках www-домена можно отключать ssi ;D
Цитата
Произвели отключение SSI для доменного имени в панели управления хостингом в разделе настроек www-домена. Пожалуйста, проверьте работоспособность.
Тему можно закрывать, если кому-то когда-нибудь из разработчиков понадобится решать вопрос отдачи заголовка last-modified, то код из сообщения #7 - вполне рабочий, по-крайней мере на сегодняшний день