Ноябрь
4
2009

Обработка ошибки 404

Обработка ошибки 404

Я думаю всем известна ошибка 404. Суть ее в том, что сервер не нашел страницу, на которую указывает ссылка. Обычно если пользователь попадает на такую страницу, то чувствует себя в тупике и сразу же закрывает страницу сайта. Любому будет понятно, что это негативно сказывается на посещаемости сайта и нужно что-то делать. К счастью в WordPress есть возможность настройки этой страницы.

Главное для пользователя, это попасть на страницу с информацией, которую он хочет узнать. Ему не интересно почему случилась ошибка и чья в этом вина. Наша задача сохранить трафик и доверие посетителя.

Стандартно WordPress предлагает просто чудовищную страницу. Посмотреть на это можете сами здесь. Не сложно догадатся, что пользователь сразу закроет страницу, и только еденицы воспользуются поиском или архивом.

Решение

К счастью эту страницу можно настроить в WordPress. Для этого нужно зайти в редактор дизайна и открыть Шаблон ошибки 404 (404.php)

Теперь нужно разобраться с возможностями которые предоставляет нам WordPress, а возможностей хватает. Практически все используют ЧПУ(ЧеловекоПонятный Урл), WordPress сохраняет эту информацию в переменной $wp_query->query_vars[‘name’] Правда хранится это дело в виде строки с дурацкими дефисами(-).

Если информация о желаниях пользователя у нас есть, то нужно ее обрабатывать. Для начала удалим все глупости, которые могли добавить ссылающиешся на вас люди.

<?php $s = $wp_query->query_vars['name'];
$s = preg_replace("/(.*)-(html|htm|php|asp|aspx)$/","$1",$s);
$s = str_replace("-"," ",$s); ?>

Теперь у нас есть набор слов, которые хотел увидеть пользователь. Теперь нужно выполнить поиск, ведь пользователь ленив и сам вводить слова в поиск врятли будет.

<?php $posts = query_posts('post_type=any&s='.$s); ?>

Ну а теперь нужно показать пользователю информацию, которую нашел поисковик.

<div id="searchtab">
<div>
<form method="get" id="searchform" action="http://tigors.net/">
<fieldset>
<input type="text" name="s" id="searchbox" value="<?php echo $s;?>" />
<input type="submit" value="Go" />
</fieldset>
</form>
</div>
</div>
<?php if (count($posts) > 0) {   echo "<p>Сожалеем, но страница на которую вы перешли не существует. Возможно вы искали <strong>одну из этих</strong> статей или страниц?</p>";    foreach ($posts as $post) { ?>
<h3><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<small><?php the_time('l, F jS, Y') ?></small>
<p><?php the_excerpt(); ?></p>
<p><?php the_tags(); ?><br />Опубликовано в категории: <?php get_the_category_list(', ');?> | <?php comments_popup_link(); ?></p>
<?php
}
}
?>
<script> _gaq.push(['_trackEvent', 'Error 404', '<?php echo $wp_query->query_vars['name'];?>']); </script>

Выявление ошибок

После того, как вы сделали жизнь посетителя немного комфортней, нужно бороться с самой проблемой. Конечно может показаться, что это похоже на войну с ветряными мельницами, но это не так. Сама проблема практически нерешаема глобально, но можно минимизировать ее появление.

Для начала нужно разобраться что могло вызвать ошибку. Вы могли допустить ошибку при создании ссылки на сайте, либо на чужом сайте указана «битая» ссылка.

У себя на сайте эту проблему решить просто. Нужно найти проблемную ссылку и заменить ее на правильную. Звучит просто, но что делать если на сайте сотни страниц. Можно обратится к сторонним средствам. Например Google Webmaster tools

На странице видно, какие страницы вызвали ошибку 404 и с каких страниц на них ведут ссылки.

Еще я добавил простенький код на страницу ошибки, который при каждом показе отсылает событие в Google Analytics.

<script>
_gaq.push(['_trackEvent', 'Error 404', '<?php echo $wp_query->query_vars['name'];?>']);
</script>

Сложнее становится, если на ваш сайт переходят по битой ссылке. Не будем же мы писать автору с просьбой исправить :). Нужно перенаправить посетителя туда, куда он хотел попасть. Для этого существуют специальные плагины. Я использую Platinum SEO, в котором есть функция создания постоянного перенаправления страницы (301) в случае изменения пути ссылки.

Некоторые мелочи

Обработка ошибки 404 в WordPress решает некоторые проблемы, но нужно знать некоторые мелочи, что-бы правильно понимать ее работу.

  • Internet explorer показывает свою стандартную страницу ошибки, если длина вашей привышает 512 байт. Вместить страницу WordPress в такой объем затруднительно.
  • Страница 404 это не только код страницы, это еще и HTTP хедер, который должна генерировать страница. Если этого не будет сделано, то в индексе поисковика будут висеть ошибочные страницы.

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

Статья написана после прочтение этой (English)

 

Неправильная раскладка: j,hf,jnrf jib,rb 404

Понравилась статья? Посоветуйте друзьям!

HowTO SEO Tips&Tricks WordPress


Понравилась статья? Подпишись на рассылку по E-Mail или в RSS.
  • Спасибо за статью. Добавлю один небольшой момент. Если на Вашем сайте набрать, предположим, http://tigor.org.ua/ping (поисковый запрос, по которому нет результатов), то поисковик не отрабатывает, просто выдавая сообщение об ошибке и строку поиска. Соответственно, оптимальнее было бы сделать так: Если поисковый запрос присутствует - выводить результаты поиска. Если поискового запроса нет - выводить (для примера) 10 последних материалов. Иначе, в том случае,если запроса нет, вы сами возвращаетесь к тому, с чего начали.
  • Спасибо за идею, добавлю это в статью.
  • спасибо за статью. надо бы свой блог почистить от 404, а то за годы накопилось неимоверно ((