| 
				
					| Zeg | Отправлено: 10 мая 2009 — 20:49   |  
					| 
  
 
  Super Member
 
  
 Покинул форум
 Сообщений всего: 891
 Дата рег-ции: Март 2009
 Откуда: Беларусь
 Репутация: 89
 
 
 
 
  
 | Ну если так копать, то и свою 404 не мешает прикрутить: 
 в .htaccess добавить (если форум находиться не в корне, а папке forum):
 
 
 CODE:ErrorDocument 404 /forum/404.php 
 И вот для примера этот самый 404.php:
 
 
 CODE:<?phpheader('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']);
 }
 Вроде бы всё, остальные обработки можно сделать по аналогии
 |  
					|  |  |  |