Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Одмин

Своя ошибка 404

Рекомендованные сообщения

На форуме, в случае некорректно набранного адреса, выдается стандартная ошибка 404 (скрин ниже), а хотелось бы свою. Создал 404.html, в .htaccess указал путь к файлу, но на форуме все-равно выдается дефолтная страница.

Подскажите, где поправить, чтобы перенаправляло на мою страницу ошибки 404!

 

post-54136-0-10737600-1410006088_thumb.jpg

Поделиться сообщением


Ссылка на сообщение

Своя страница об ошибке

Без костылей это не сделать. Апач, насколько я знаю, не перехватывает ошибки отправленные из скриптов, поэтому переопределить их через ErrorDocument не получится. И 404 заголовок отправляется не только к некорректно набранному адресу, а еще к куча других ошибок, перегрузить все 404 ошибки одной страницы будет не правильно, а то может выйти что-то подобное.

Поделиться сообщением


Ссылка на сообщение

@siv1987, 403 работает нормально, но я так понял, что с 404 лучше не заморачиваться?

Поделиться сообщением


Ссылка на сообщение

403 работает нормально

При каких обстоятельствах он работает? При листинге категории, или при выводе какой нибудь ошибки форума с кодом 403? Если при листинге категорий то естественно будет работать, эта системная ошибка сервера и ее можно перехватить через htaccess. Таким же образом можете отключить реврайт ссылок (мод_реврайт перехватывает все запросы) и запросить несуществующий адрес, тогда 404 ошибка тоже "сработает". Но в данном случае мод_реврайт перехватывает все несуществующие запросы и отправляет на index.php.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

При каких обстоятельствах он работает?

В .htaccess добавил:

 

ErrorDocument 403 /403.html

 

(403.html заблаговременно был создан в корне форума).

 

 

При листинге категории, или при выводе какой нибудь ошибки форума с кодом 403?

Запрет листинга никак не повлиял на вывод ошибки 403.

 

 

Таким же образом можете отключить реврайт ссылок (мод_реврайт перехватывает все запросы) и запросить несуществующий адрес, тогда 404 ошибка тоже "сработает". Но в данном случае мод_реврайт перехватывает все несуществующие запросы и отправляет на index.php.

Вы имеете ввиду RewriteEngine off?

Поделиться сообщением


Ссылка на сообщение

Кстати, если нужна имена 404 ошибка при запросе несуществующего адреса, то вызов ее находится в контроллере /admin/sources/base/ipsController.php

 

$this->registry->getClass('output')->showError( 'incorrect_furl', 404, null, null, 404 );

Можете сверстать свой шаблон с ошибкой в врапере форума. Можно вместо нее подключить сторонний файл.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

В .htaccess добавил:

При каких обстоятельствах (случаях) срабатывает?

Я вот зашел у вас в профиль пользователя. Доступ запрещен, а в заголовке ответа от сервера 403 ошибка, но у меня выводится стандартная ошибка форума.

 

GET /user/907-helga/
403 Forbidden

Разницу видите? Если ошибка обрабатывается сервером (запрос каталога без индексного файла, блокировка ип через htaccess и другие действия которые вызывают 403 код) то ее можно перехватить через htaccess. В случае запросом несуществующих УРЛ, то мод реврайт захватывает их и отправляет форуму. И уже все ответы отправленные из форума не являются ошибкой сервера.

 

Запрет листинга никак не повлиял на вывод ошибки 403.

Что в вашем понимании значит "вывод ошибки 403"?

 

Вы имеете ввиду RewriteEngine off?

Да.

Поделиться сообщением


Ссылка на сообщение

@siv1987, я думаю, такие ошибки, как "запрет гостю к просмотру профиля пользователя" можно оставить на уровне форума. А ошибки, выдаваемые при попытке доступа к запрещенным от просмотра файлам (или директориям), можно осуществлять через ошибку, посредством сервера (403).

 

И вообще, изначально, мне был интересен немного иной вопрос - чтобы при любых ошибках не выводились сигнатуры сервера в этих ошибках, ибо чревато. Посему, я озаботился вопросом создания своих страниц ошибок.

Поделиться сообщением


Ссылка на сообщение

я думаю, такие ошибки, как "запрет гостю к просмотру профиля пользователя" можно оставить на уровне форума. А ошибки, выдаваемые при попытке доступа к запрещенным от просмотра файлам (или директориям), можно осуществлять через ошибку, посредством сервера (403).

Эти ошибки обрабатываются на разных уровнях, поэтому и результаты разные. Хотя и то, и то имеет код 403 Forbidden.

 

И вообще, изначально, мне был интересен немного иной вопрос

Ну изначально вопрос сабжа был про то, как создать свою страницу с ошибками в случае некорректно набранного адреса без дефолтной страницы форума. Я вам объяснил почему появляется ошибка форума при запросе таких адресов, и почему без костылей в данном случае это сделать нельзя. Потом вы сказали что "403 работает нормально". Я вам объяснил почему 403 работает "нормально", и почему 404 работает "не нормально".

Поделиться сообщением


Ссылка на сообщение

@siv1987, спасибо большое. Я вас прекрасно понял. И ведь действительно, при отключении RewriteEngine (в положение Off), ошибка 404 работает везде (даже при обращении гостем к профилю зарегистрированного пользователя). Но ведь отключение RewriteEngine повлияет на другие функции .htaccess в mod_rewrite.c, коими учитывается именно рабочее положение RewriteEngine (On).

Поделиться сообщением


Ссылка на сообщение

Кстати, если нужна имена 404 ошибка при запросе несуществующего адреса, то вызов ее находится в контроллере /admin/sources/base/ipsController.php

Не подскажите, что там нужно поправить?

Поделиться сообщением


Ссылка на сообщение

require DOC_IPS_ROOT_PATH.'404.php';

Если включен ЧПУ, то править нужно в /admin/sources/base/ipsRegistry.php

 

		if ( ipsRegistry::$settings['use_friendly_urls'] AND self::$_noFurlMatch === true )
		{
			self::getClass('output')->showError( 'incorrect_furl', 404, null, null, 404 );
		}

Заменив на

 

		if ( ipsRegistry::$settings['use_friendly_urls'] AND self::$_noFurlMatch === true )
		{
			require DOC_IPS_ROOT_PATH.'404.php';
			exit;
		}

  • Upvote 3

Поделиться сообщением


Ссылка на сообщение

@siv1987, большое спасибо :)

Поделиться сообщением


Ссылка на сообщение

Если включен ЧПУ

А если ЧПУ не включён?

Поделиться сообщением


Ссылка на сообщение

А если не включен то править ничего не нужно (см #6, но в данном случае не имеет смысла).

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...