привязать в динамике дату изменения к определенному файлу

123
nickspring
На сайте с 29.03.2006
Offline
228
#11

ну вот пожалуй разве что в данном случае... :)

A
На сайте с 10.01.2005
Offline
106
#12

Во-первых, речь идет не о сайте, а о разделе, который обновляется примерно раз в неделю. Обновив файл или докум. я таким образом выдам достоверную дату. Другое дело, что Апач настроен "но кэш" и упорно выдает 200;) . Программер хостинга готов помочь, но не знает, как. Буду признателен, если подскажете, что ему посоветовать😕 .

Сайты для людей - не выдумка, а быль. Если считать архитекторов и дизайнеров людьми:)Целевая реклама для целевой группы.
nickspring
На сайте с 29.03.2006
Offline
228
#13

Из вашего поста я так и не понял как организовано хранение информации указанного раздела... кроме того не допирает при чем тут апач с ноу-кэшем? (дата файла выдается одна и та же? может тогда что-то типо a ля clearstatcache() in PHP использовать?)

A
На сайте с 10.01.2005
Offline
106
#14

Сори:) Щас хранение информации реализовано в MySQL. Но можно ее экспортировать в XML - файл. Суть проблемы в том, что сервер ВСЕГДА отдает поисковикам 200, а я хочу -чтоб 304 если содержание РЕАЛЬНО не изменилось, и 200 -если изменилось. Готов раз в неделю поработать руками:) Словом, проблема в отдаче LM для php

nickspring
На сайте с 29.03.2006
Offline
228
#15

Прошу уточнить... проблема в том как выдавать код или в том, как получать дату изменения?

A
На сайте с 10.01.2005
Offline
106
#16

Извините, вырубился:) Получить дату я теперь могу - например, так как посоветовали в этой ветке. Теперь проблема в том, как отдавать код

nickspring
На сайте с 29.03.2006
Offline
228
#17

Как отдавать Last-Modified вам уже сказали в начале темы. Если вас интересует выдача If-Modified-Since (коды 200 и 304), то тут два варианта хода событий:

1) PHP стоит как модуль Apache. В таком случае пишем примерно так:

$headers = getallheaders();

$lastmodified=gmdate('D, d M Y H:i:s',filemtime("test.php")).' GMT';
if ($headers['If-Modified-Since']==$last*modified)
{
header('HTTP/1.0 304 Not Modified');
exit(); // выход, не выводим содержимое страницы
}
else
{
header('HTTP/1.0 200 OK');
header("Last-Modified: $lastmodified");
}
echo $content; // вывод содержимого страницы

2) На хостинге стоит PHP-wrapper (PHP не как модуль апача). Тогда ничего не пишем и не пытаемся. Забываем про эту идею, поскольку функция getallheaders в данном случае не доступна

A
На сайте с 10.01.2005
Offline
106
#18

Большое спасибо:) Свяжусь с программистом и поставлю точки над и. Мне очень трудно во всем этом разбираться -я редактор, причем некоммерческого сайта:)

K
На сайте с 23.10.2004
Offline
159
#19
psylosss:
nickspring, вобщем-то в этом я с вами согласен. Но задачи разные бывают. Last-Modified должен отдавать актуальную дату последнего изменения. Просто в некоторых случаях - это дата последнего изменения файла. Ну, например, статьи лежат в файлах, а не в БД.

А если статьи или информация о производимой продукции лежит в БД, то как?

Так

<META http-equiv=Last-Modified: content="<?php echo gmdate("D, d M Y H:i:s");?> GMT">

всегда будет отдаваться текущая дата.

Не получится ли, что поисковик вместо того, чтобы индексировать следующие страницы, будет заново индексировать уже проиндексированные (из-за того что у них новая дата выдается)???

nickspring
На сайте с 29.03.2006
Offline
228
#20

Нет, получится что Вы для поисковика будете говорить что у Вас изменилось всё. В таком случае, как мне известно, тот же Яндекс сам пытается определить что изменилось, а что нет. Вообще может получиться что реально измененные страницы в таком случае могут чисто теоретически дольше индексироваться. Если инфа в БД, то лучше завести дополнительное поле в каждой таблице или отдельную таблицу, где будет храниться информация о датах последних изменений по каждой странице.

123

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