VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
404 ошибка в vBulletin для удаленных и несуществующих тем
0
Можно ли как-то сделать, что если темы не существует (не была создана, но главное когда была удалена), то выдавалась 404 ошибка, вместо 200.
Сейчас для удаленных тем вот что выдается: http://vbsupport.ru/forum/showthread.php?t=112720 (только пример, а не реально удаленный топик) Суть не в тексте, а в том, что такая страница отдает код 200.
Может какие-то хаки есть или еще как-то можно настроить такой вариант?
Если кто-то готов решить проблемы платно, скиньте ваше предложение.
Unlock, когда тема удаляется, то и вся информация о ней удаляется из базы, т.е. не остается ничего, при помощи чего бы можно было определить, что такая тема когда-то существовала. т.о. образом остается только выдавать 404 при обращении к любой несуществующей теме. если такой вариант устраивает -- попробую накидать модуль.
@Unlock
Продвинутый
Join Date: Jun 2009
Posts: 379
Версия vB: 3.8.2
Reputation:
Опытный 31
Репутация в разделе: 11
0
Ghost, не знал такой особенности. А вот в этом:
Quote:
if (((!$thread['visible'] AND !can_moderate($thread['forumid'], 'canmoderateposts'))) OR ($thread['isdeleted'] AND !can_moderate($thread['forumid'])))
$thread['isdeleted'] это что означает? Или это при "мягком" удалении?
Но вообще то, 404 для любой не существующей темы, тоже хороший вариант.
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1014
Репутация в разделе: 896
4
Quote:
Originally Posted by Unlock
$thread['isdeleted'] это что означает? Или это при "мягком" удалении?
угу при "мягком". на то оно и мягкое, чтобы оставлять информацию о теме в базе для возможности последующего восстановления. при "жестком" (физическом) удалении -- сносится вся инфа из таблиц.
информация о теме (сообщении, разделе) автоматически выбирается в скрипте global.php в переменную $threadinfo ($postinfo, $foruminfo) при наличии параметра threadid (postid, forumid) в запросе -- см. код этого скрипта после коментария
PHP Code:
// Init post/thread/forum values
делается это при помощи функции 'verify_id' (includes/functions.php), которая переадресует запрос функции 'fetch_threadinfo' (fetch_postinfo, fetch_foruminfo), в конце которой есть вызов одноименного хука. соответсвенно, можно повесить на этот хук свой модуль: админка -- Продукты и модули -- Добавить новый модуль -- заполняем форму
Продукт = vBulletin
Местоположение модуля = fetch_threadinfo
Заголовок = 404_thread
Порядок выполнения = 5
Модуль включен = да
Код PHP модуля =
PHP Code:
if (!isset($threadcache["$threadid"]['threadid']) OR $threadid != intval($threadcache["$threadid"]['threadid']))
{
header('HTTP/1.1 404 Not Found');
echo 'Error 404: Thread not found!';
exit();
}
и жмем кнопку "Сохранить". аналогично поступаем с сообщениями, только местоположение модуля для них будет fetch_postinfo, а код модуля
PHP Code:
if (!isset($postcache["$postid"]['postid']) OR $postid != intval($postcache["$postid"]['postid']))
{
header('HTTP/1.1 404 Not Found');
echo 'Error 404: Post not found!';
exit();
}
Ghost добавил 04.08.2009 в 11:26
Для раздела будет сложнее, т.к. если он не существует, то до хука дело не дойдет -- функция fetch_foruminfo прекратит свое выполнение после кода
PHP Code:
if (!$vbulletin->forumcache["$forumid"])
{
return false;
}
но можно найти ближайший после выборки информации о разделе хук (это будет хук 'style_fetch') и повесить на него модуль такого содержания
PHP Code:
if ($vbulletin->GPC['forumid'] AND !isset($foruminfo['forumid']))
{
header('HTTP/1.1 404 Not Found');
echo 'Error 404: Forum not found!';
exit();
}
Last edited by Ghost : 08-04-2009 at 12:26 PM.
Reason: Добавлено сообщение
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1014
Репутация в разделе: 896
9
вот держи готовый продукт -- просто импортируй его (админка -- Продукты и модули -- Управление продуктами -- Добавить/импортировать продукт)
@Unlock
Продвинутый
Join Date: Jun 2009
Posts: 379
Версия vB: 3.8.2
Reputation:
Опытный 31
Репутация в разделе: 11
0
Ghost, спасибо огромное!
Есть пара вопросов.Если не затруднит, объясни как ручками это сделать. Т.е. в каких файлах (видимо global.php) и в каком месте надо вставить код для каждого случая? Просто хочется иметь возможность без проблем откатиться, если возникнут не понятные моменты в работе.Да и пока есть мысль только для топиков выдавать 404 ошибку, но не для постов и разделов. Хотя это и полезно, но все сразу стремно ставить.
Я вот не в курсе, если поставить готовый вариант. После его удаления все изменения будут отменены или нет?
@netwind
Гуру
Join Date: Aug 2005
Location: Рiдна Олбанея
Posts: 3,844
Версия vB: 3.8.x
Reputation:
Гуру 1227
Репутация в разделе: 901
0
Unlock, продукт - это такой термин vbulletin. Файл нужно загрузить в админке и все. И так же в админке потом удаляется без проблем.
А теперь расскажи почему выдача ошибки 404 так важна?
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1014
Репутация в разделе: 896
0
Quote:
Originally Posted by Unlock
в каком месте надо вставить код для каждого случая
кажется, я достаточно подробно объяснил, каким образом создается модуль и где.
Quote:
Originally Posted by Unlock
Я вот не в курсе, если поставить готовый вариант. После его удаления все изменения будут отменены или нет?
netwind, уже ответил на этот вопрос. как поставить продукт -- опять-таки указал в том же посте, где и сам продукт прикреплен.
Quote:
Originally Posted by Unlock
Хотя это и полезно, но все сразу стремно ставить.
а "ручками это сделать" не стремно? имхо проще поставить готовый продукт, чем вносить правки самому.
Quote:
Originally Posted by Unlock
пока есть мысль только для топиков выдавать 404 ошибку
админка -- Продукты и модули -- Управление модулями: ищи модули 404_post, 404_thread, 404_forum и отключай любой из них, который не нужен.
Quote:
Originally Posted by netwind
расскажи почему выдача ошибки 404 так важна
не важна, но полезна для поисков, чтобы они удалили из своего индекса удаленные с форума темы.
@Unlock
Продвинутый
Join Date: Jun 2009
Posts: 379
Версия vB: 3.8.2
Reputation:
Опытный 31
Репутация в разделе: 11
0
netwind, не путай меня Ghost, как поставить продукт - я в курсе ;) Я хотел не через интерфейс воблы сделать, а просто файлы вручную исправить. Ручками не стремно, я так скажем хоть и ламер, но продвинутый.
Но раз можно отключить темы, пост или раздел, то проверю сейчас. Но как откатится если что можно? Просто удалением "продукта"?
И да, сразу для netwind. Нечего делать удаленным темам, а точнее кучи одинаковых страниц в поисковиках. На Серче подробнее написал.
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1014
Репутация в разделе: 896
0
Quote:
Originally Posted by Unlock
Я хотел не через интерфейс воблы сделать, а просто файлы вручную исправить.
не надо этого делать -- откатить в таком случае будет сложнее.
Quote:
Originally Posted by Unlock
Но как откатится если что можно? Просто удалением "продукта"?
продукт можно удалить. или просто отключить, не удаляя. как и любой модуль продукта.