|
Отправлено: 10 мая 2009 — 20:49
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
Ну если так копать, то и свою 404 не мешает прикрутить:
в .htaccess добавить (если форум находиться не в корне, а папке forum):
CODE:ErrorDocument 404 /forum/404.php
И вот для примера этот самый 404.php:
CODE:<?php
header('HTTP/1.0 404 Not Found');
echo '<html><head><title>404 Страница не найдена :: Форум</title><meta http-equiv="refresh" content="8; url=http://moi_sait.xx/forum/"><META http-equiv="Content-Type" content="text/html; charset=windows-1251"></head><body>';
echo '<p><h1><b><font color="red">404</font></b></h1></p>Запрошенная страница не найдена!<br><p><u>Причины, по которым могла произойти ошибка</u>:<br><i>Неправильно набран адрес;<br>Такой страницы никогда не было на сайте;<br>Такая страница была, но была перемещена.</i></p>
<p><a href=http://moi_sait.xx/forum/>Главная страница Форума</a></p>
<p><a href=http://moi_sait.xx/>Главная страница сайта</a></p>';
exit;
?>
Может кому и пригодится. Тем более, что с 404-ой ошибки можно поиметь массу полезной информации. Например, организовать отсылку сообщения на мыло с данными о том, кто и как попал на эту 404-ю (например, если где-то в коде самого форума или сайта есть такая ошибка, "кривая" ссылка и пр.).
(Добавление)
зы. Такая "склейка", предложенная vipraskrutka и своя 404 крутятся на форуме (да и сайте) уже несколько лет. |
|
|
yura3d |
Отправлено: 11 мая 2009 — 15:08
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
vipraskrutka пишет:Относится, особенно незакрытые теги.
Хм, не знал, приму к сведению.
vipraskrutka пишет:т.е. чтоб был редирект с exbb.org на www.exbb.org (или наоборот), но чтоб был один вариант.
Так в версии RC1 поддержка подобного редиректа есть изначально (в зависимости от того, как указан адрес форума в админке, с www или без). Можете проверить сейчас, при наборе www.exbb.org/community произойдёт редирект по адресу без www. Единственное отличие, это сделано средствами PHP, а не htaccess (некоторые хостинги htaccess запрещают) и я совсем забыл про 301-й заголовок, в будущей версии заголовок добавлю.
Zeg пишет:Ну если так копать, то и свою 404 не мешает прикрутить:
Буду думать, хотя ещё попадаются хостинги, запрещающие использование htaccess |
|
|
yura3d |
Отправлено: 10 июня 2009 — 12:22
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
vipraskrutka пишет:Так я уже об этом говорил, что на 404 ошибке должен быть 404 ответ
Вобщем реализация такая. Открываем файл include/fm.class.php, находим строки:
CODE:$this->_Link = ($meta !== '') ? "<meta http-equiv='refresh' content='".$this->_Refresh."; url=".$meta."'>":'';
$return = ($meta === '') ? ' <a href="javascript:history.go(-1)"> << '.$this->LANG['Back'].'</a>':$this->LANG['ReloadingPage'];
И над ними добавляем строки:
CODE:if (defined('IS_404'))
header('HTTP/1.1 404 Not Found');
Теперь для отправки 404-го ответа перед вызовом функции, генерирующей сообщение об ошибке $fm->_Message(), необходимо инициализоровать константу IS_404:
CODE:define('IS_404', 1);
Вот простой пример, в скрипте topic.php на самом первом этапе перед открытием темы происходит проверка, переданы ли скрипту номер раздела и номер темы. Если не переданы, то выводится сообщения об ошибке:
CODE:if (($topic_id = $fm->_Intval('topic')) === 0 || ($forum_id = $fm->_Intval('forum')) === 0) {
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['CorrectPost']);
}
Как и говорил выше, для того чтобы страница с таким сообщением имела ответ 404, необходимо перед вызовом функции $fm->_Message() инициализировать константу IS_404:
CODE:if (($topic_id = $fm->_Intval('topic')) === 0 || ($forum_id = $fm->_Intval('forum')) === 0) {
define('IS_404', 1);
$fm->_Message($fm->LANG['MainMsg'],$fm->LANG['CorrectPost']);
}
Вроде бы всё, остальные обработки можно сделать по аналогии |
|
|
|