31 марта 2010

Страница обработки ошибки 404

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

Error 404 — Not Found
Sorry, but you are looking for something that isn’t here.

Обычно в шаблоне эта страница имеет имя 404.php. Для того, чтобы убедиться в этом идем в папку шаблонов на вашем сайте : http://yoursite.ru/wp-content/themes/.

Если такой страницы нет в составе шаблона (а такое изредка, но встречается) будет хорошим тоном создать её, в противном случае посетитель может оказаться в растерянности, что делать дальше и просто уйдет с сайта. Ну что ж, тогда давайте создадим саму простую страницу.
Для начала создаем файл 404.php в папке на локальном диске вашего компьютера с помощью редактора Notepad++ (или любого другого, поддерживающего кодовую страницу UTF-8). О том как в общем виде выглядит файл шаблона для вывода страницы смотрите в Сведениях об основе шаблона WordPress.
Файл 404.php будет содержать мимимальный код:

<?php get_header() ?>
<h2>Ошибка 404 - страница не найдена</h2>
<p>Извините, но по вашему запросу ничего не найдено. Вернитесь на главную страницу <a href="http://mysite.ru/">http://mysite.ru/</a> или воспользуйтесь поиском по сайту</p>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Копируем файл 404.php в папку шаблона на сервер и проверим как все работает. Для этого достаточно ввести в браузере адрес любой страницы, которая не существует на вашем сайте. Например http://mysite.com/nopage
Ну вот, уже лучше, пользователь оповещен об ошибке и ему предложено сделать дальнейший выбор.
Еще как вариант.  Файл 404.php существует, но содержит сообщение об ошибке на английском:

<?php get_header() ?>
<div id="content">
    <h2 class="pagetitle">Error 404 - Not Found</h2>
    <p id="error-404">Sorry, but you are looking for something that isn't here.</p>
</div>
<?php get_sidebar(); ?>
<?php get_footer() ?>

В таком случае вам достаточно просто заменить сообщения на русский язык, сохранив теги и селекторы HTML, которые используются текущей темой. На выручку опять же придет редактор Notepad++ или подобный.
Хорошо, теперь файл с сообщением об ошибке существует и все работает. Но остается еще одна проблема, а как узнать по какому ошибочному адресу пришел посетитель. Ведь далеко не факт, что он отпишеться вам в комментариях и вы сможете предпринять меры по исправлению ошибки.
На выручку придет PHP код, который вышлет отчет об ошибке на указанный электронный адрес c указанием неправильно запрошенной страницы. Вам только нужно заменить строку адреса mybox@gmail.com на ваш существующий адрес:

<?php
 mail("mybox@gmail.com", "Сообщение 404 - страница не найдена", $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], "From: mybox@gmail.com\n")
?>

и тогда итоговая страница обработки 404 ошибки будет выглядет так:

<?php get_header() ?>
<div id="content">
    <h2 class="pagetitle">Error 404 - Not Found</h2>
    <p id="error-404">Sorry, but you are looking for something that isn't here.</p>
</div>

<?php
 mail("mybox@gmail.com", "Сообщение 404 - страница не найдена", $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], "From: mybox@gmail.com\n")
?>

<?php get_sidebar(); ?>
<?php get_footer() ?>

Остается проверить отправку сообщения, указав в строке браузера адрес несуществующей страницы: http://mysite.ru/nopage.

Статьи по теме
Статья оказалась полезной? Подпишись на RSS рассылку или следуй за мной на твиттере @wpstarter или по этой ссылке wpstarter

Комментариев: 12

Вы можете следовать любому комментарию через RSS 2.0 feed.

Вы можете оставить комментарий или trackback с вашего сайта.

  1. Twin:

    Я думаю идеально будет ещё добавить в письмо реферер-ссылку, то есть страницу, с которой посетитель перешел по ошибочной ссылке. Как раз она (реферер) записывается в переменную $_SERVER[‘HTTP_REFERER’], поэтому не составит труда подправить код.
    А так, спасибо за идею.

  2. Alex:

    2Twin
    Спасибо за добавление
    Мне не понятен смысл, для чего знать реферера?

  3. Как новичку сделать страницу обработки ошибки 404…

    ERROR 404 — эта ошибка, которая появляется на попытку запроса не существующей страницы блога. Начинающим будет полезно знать, как правильно обработать появление этой ошибки…

  4. Полезная инфа. Надо тоже заняться своими 404 страницами, а то всё никак руки не дойдут :)

  5. Twin:

    Alex, чтобы потом сообщить автору сайта, чтобы исправили ссылочку :)

  6. А не проще будет поставить принудительный редирект на главную страницу сайта, предположим, через 5 секунд после сообщения об ошибке?

  7. admin:

    2DarkwaveMD
    Согласен, как один из вариантов можно рассмотреть редирект.
    Но поскольку материал категории «для чайников», то нужно будет описать все подробно
    Спасибо за совет

  8. Для сервера типа Apache должен быть файл у папки со страницами сайта и названием
    «. htaccess» и содержанием файла хотя бы:

    ErrorDocument 404 /?error=404

  9. Мария:

    Спасибо за статью . Познавательно ! А вот здесь можно посмотреть интересное решение для 404 страницы http://kvinta-a.ru/stranitsa-404/

Оставьте комментарий

Обведите фигуру по линии:

Ставим WordPress на локальном копьютере