Как отдавать поисковикам Last-Modified динамических страниц?

[Удален]
#11

Выдавайте текущую дату, не парьтесь. При сортировке по дате будет выдаваться всегда, а ни для чего другого это не нужно (разве что поможет - смотреть когда индексатор заходил).

AB
На сайте с 06.07.2004
Offline
45
#12

Да с PHP проблем нет, разве это парка?

Первые 2 вопроса решены, разобрались уже:

$filename = $_SERVER["REQUEST_URI"];

$filename = substr($filename , 1);
$file_date = gmdate("D, d M Y H:i:s", filemtime($filename)) . " GMT";
header('Last-Modified: '.$file_date);

А вот с третьим - действительно проблема, не хотят PHP-шные хэдеры из под SSI-файла работать.

Видимо вариантов нет, придется все инклюды на PHP переделать, а файлы с расширением .shtml PHP-парсеру скармливать, путем соответствующей настройки .htaccess

Не очень-то красиво выходит.

Вот если бы эти четыре простеньких строчки на SSI можно было реализовать, это было бы круто!

Кстати, сейчас попробовал выставить XBitHack full в .htaccess.

Меня бы устроил и такой расклад, пускай веб-сервер дату определяет сам по времени создания файла. Т.к. вся "динамика" моих страниц - это всего лишь подключение к ним темплэйта с помощью инклюдов.

Но не помогло. Может быть хостер давит эту директиву?

re-pulse your mind (http://www.amontillado.ru)
wolf
На сайте с 13.03.2001
Offline
1183
#13

Тупая выдача Last-Modified ничего не даст.

Надо обрабатывать запрос if-modified-since - отдавать 200 или 304 в зависимости от ситуации. Прочувствуйте разницу.

Сергей Людкевич, независимый консультант, SEO-аудиты и консультации - повышаю экспертность SEO-команд и специалистов ( http://www.ludkiewicz.ru/p/blog-page_2.html ) SEO-блог - делюсь пониманием некоторых моментов поискового продвижения ( http://www.ludkiewicz.ru/ )
pro-maker
На сайте с 08.12.2003
Offline
281
#14
wolf:
Надо обрабатывать запрос if-modified-since - отдавать 200 или 304 в зависимости от ситуации. Прочувствуйте разницу.

Etag нужен?

wolf
На сайте с 13.03.2001
Offline
1183
#15
pro-maker:
Etag нужен?

Понятия не имею. Моё дело - программистам задачу поставить. А что там им для этого нужно - они сами решают. :)

[Удален]
#16
Atomic Bombermа:
Да, я бегло по док-ции пробежался, наваял на скорую руку такой код:

Я бы сделал примерно так:


<?php
$dirname = getcwd(); // Текущий каталог, откуда запускается этот модуль
$LastDate = 0; // Init
clearstatcache(); // Очистить кэш PHP (файловые функции кэшируются)
if (file_exists($dirname) && is_dir($dirname)) { // $dirname существует и это каталог
if ($handle = opendir( $dirname )) { // Открываем её
while (false !== ($file = readdir($handle))) { // Читаем имена файлов
if ($file != "." && $file != "..") { // Игнорируем "." и ".."
$fDate = filemtime($file); // UnixTimestamp последнего изменения файла или FALSE
if ($fDate !== false) $LastDate = max($fDate, $LastDate);
}
}
closedir($handle);
}
}

echo gmdate("D, d M Y H:i:s", $LastDate)." GMT"; // UnixTimestamp -> GrinwichTime
?>

Только строка "$LastDate = 0; // Init" вызывает подозрения (в Unix-е время бывает отрицательное, по-моему если до 1970г ;) )

Да, и при выборке файлов мз каталога - фильтровать по .php Или как надо...

Ярик
На сайте с 26.10.2003
Offline
121
#17
Atomic Bombermа:
Или остается только встраивать в шаблон PHP-код типа такого:
header('Last-Modified: '.date('r', time()-60*60*24+rand(0, 60*60*5)));
wolf:
Тупая выдача Last-Modified ничего не даст.

Надо обрабатывать запрос if-modified-since - отдавать 200 или 304 в зависимости от ситуации. Прочувствуйте разницу.

Поэтому — лучше типа такого ;)

$rndomis=rand(123456,654321); $timedate=$HTTP_SERVER_VARS["HTTP_IF_MODIFIED_SINCE"];

if (!empty($HTTP_SERVER_VARS["HTTP_IF_MODIFIED_SINCE"])) {
header("HTTP/1.1 304 Not Modified");
header("Expires: ".gmdate("D, d M Y H:i:s", time()+($rndomis*33))." GMT");
header("last-modified: $timedate"); }
else {
header("Expires: ".gmdate("D, d M Y H:i:s", time()+($rndomis*33))." GMT");
header("last-modified: ".gmdate("D, d M Y H:i:s", time()-($rndomis*7))." GMT"); }

Вот еще в тему /ru/forum/7171

не посылай, да и не послан будешь...
[Удален]
#18
Atomic Bombermа:
Кстати, сейчас попробовал выставить XBitHack full в .htaccess.Но не помогло. Может быть хостер давит эту директиву?

Вроде для "server-parsed" документов веб-cервер Apache будет выдавать "Last-Modified" в том случае, если указана директива "XBitHack full" (например, в файле .htaccess), и для файла, к которому происходит обращение, выставлен атрибут "исполняемый" для группы (например, с помощью команды "chmod g+x имя_файла", выполненной в Unix-shell).

Посмотрите http://www.labshost.ru/faq/index.php?action=article&cat_id=002&id=18 и http://faq.mtw.ru/cgi-bin/faq.pl?number=9#7

[Удален]
#19

Ярик, приведенная конструкция вообще не в тему. Вы бы хоть подумали, что она делает.

Ярик
На сайте с 26.10.2003
Offline
121
#20
Miha Kuzmin (KMY):
Ярик, приведенная конструкция вообще не в тему. Вы бы хоть подумали, что она делает.

Подумал... 😂 Эта конструкция обрабатывает if-modified-since

Если присутствует то 304, если нет то 200

Очень удобная штука. Или я ступил и непопал в тему? 😕

Вот только дата от фонаря получается

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий