VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Была аналогичная тема, но подревнее версия: http://vbsupport.ru/forum/showthread.php?t=7011
Суть проблемы: Яндекс настойчиво просит выставлять Last-modified. http://help.yandex.ru/webmaster/?id=995332
Путем простой проверки: http://last-modified.com/ru/last-mod...since-php.html получаем, что вобла не заморачивается этим заголовком. Плохо.
Пока подставил, что все php сопровождаются Last-modified в текущее время. Не очень-то правильно, мягко говоря.
Есть предположение, что надо в headinclude проверять скрипт и если это showthread, то выдавать дату последнего сообщения, в противном случае - текущую дату.
Буксую на дате последнего сообщения и проверке скрипта :( Прошу помощи.
olegon добавил 03.05.2013 в 09:50
С определением скрипта разобрался
Code:
<if condition="THIS_SCRIPT == 'showthread'"></if>
olegon добавил 03.05.2013 в 10:06
$thread[lastposttime] еще есть, но в headinclude оно еще не посчитано?
Last edited by olegon : 05-03-2013 at 11:06 AM.
Reason: Добавлено сообщение
headinclude уже не подойдет, поскольку header должна быть первой... тогда где? и как там получить дату последнего сообщения?
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 8432
0
Quote:
Originally Posted by olegon
тогда где? и как там получить дату последнего сообщения?
обычно, все данные о теме/сообщении/форуме, запрашиваются в самом начале в глобал
массивы:
$threadinfo
$postinfo
$foruminfo
в хидере так же должны быть доступны эти переменные
к сожалению, PHP-команда header работает только до вывода каких-либо других символов, т.е. проблема оказалась куда глубже, чем позволяют мои знания в этой области :( хотя на индексации однозначно положительно бы сказалось это нововведение...
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 8432
0
посмотреть, в каком месте (файле) вобла отправляет заголовки и доступны ли там перечисленные массивы
если доступны, то брать время из массива и отправлять заголовок либо в пхп скрипте, либо в шаблоне
Luvilla
Гость
Posts: n/a
хм...
ну, допустим, есть ласт_модифай
но они ж хотят и If-Modified-Since
тест по ссылке из первого поста:
А откуда сомнения в полезности? Я бы и не стал чесаться, но Яндекс пишет... Где-то попадались комментарии, что и гугл стал халявить после смены движка, который перестал отдавать Last-modified. Да и по логике вещей поисковику надобно знать, обновлялась тема или нет. Что касается прикручивания, то там же есть пример и достаточно простой. Даже в functions.php есть место, куда это воткнуть (судя по header-командам).
Luvilla
Гость
Posts: n/a
Quote:
Originally Posted by olegon
А откуда сомнения в полезности?
практический опыт
есть куча форумов (конкретно вобла), на которых админ никогда не заморачивался вообще никаким сео, и форум прекрасно индексируется
и есть куча форумов, где ситуация - с точностью до наоборот
Quote:
Originally Posted by olegon
Я бы и не стал чесаться, но Яндекс пишет...
ну... допустим, лично я не ориентируюсь на яндекс-аудиторию
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 8432
0
Quote:
Originally Posted by olegon
Даже в functions.php есть место, куда это воткнуть (судя по header-командам).
ну вот можно в этой функции по условиям отдавать нужный хидер
добавить в список глобальных переменных функции, массивы $threadinfo, $foruminfo
PHP Code:
if(isset($threadinfo) OR isset($foruminfo)) { if(THIS_SCRIPT == 'showthread') { // Your code here for threads } }
для тем вы уже знаете как добавить заголовок, для раздела, можно брать дату последнего поста, она есть в массве $foruminfo
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 8432
4
upd
сейчас глянул где выполняется функция exec_headers() где и отправляются заголовки
немного раньше, чем сформированы массивы и сразу после этого отправляются куки =\
попробуйте добавить такой код в модуле
PHP Code:
if((THIS_SCRIPT == 'showthread' AND isset($threadinfo)) OR (THIS_SCRIPT == 'forumdisplay' AND isset($foruminfo))) { if(THIS_SCRIPT == 'showthread' AND isset($threadinfo)) { if($threadinfo['lastpost']) { $LastModified_unix = $threadinfo['lastpost']; $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix); $IfModifiedSince = false; if(isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) { $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); } if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5)); } if($IfModifiedSince AND $IfModifiedSince >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); exit; } header('Last-Modified: '. $LastModified); } } else if(THIS_SCRIPT == 'forumdisplay' AND isset($foruminfo)) { if($foruminfo['lastpost']) { $LastModified_unix = $foruminfo['lastpost']; $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix); $IfModifiedSince = false; if(isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) { $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5)); } if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5)); } if($IfModifiedSince AND $IfModifiedSince >= $LastModified_unix) { header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); exit; } header('Last-Modified: '. $LastModified); } } }