Корректная обработка 404 ошибки

Корректная обработка ошибки 404

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

Правильная обработка страницы 404 ошибки

Чем плоха страница ошибки 404 по умолчанию?

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

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

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

Как сделать страницу ошибки 404 максимально полезной?

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

    • ссылку на главную страницу сайта
    • форму поиска по сайту
    • самые популярные страницы сайта(топ-10)
    • ссылку на карту сайта
  3. Простая, а порой даже забавная обработка страницы 404 ошибки, поможет задержать на сайте пользователя. Есть много сайтов тому подтверждением
  4. Сообщите об ошибке в дружелюбной манере. «Упс! Извините, мы не можем найти данную страницу!» звучит приятнее, чем «Ошибка 404 – страница не найдена»

Как реализуется обработка 404 ошибки?

Во-первых, необходимо запретить индексацию данной страницы  поисковыми роботами. Для этого необходимо убедиться, что возвращается правильный http статус ошибки, тогда поисковики ее проигнорируют. Но для надежности лучше запретить  страницу в файле robots.txt , добавив в него всего одну строку:

Disallow: /404.html

Во-вторых,  чтобы отображалась  собственная страница 404 ошибки в файле .htaccess (для сервера Apache) необходимо прописать следующее:

ErrorDocument  404 / 404-error.html

где 404-error.html и есть специально созданная страница-обработчик ошибки.

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

Как бороться с возникновением ошибки 404 на сайте?

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

Грамотная обработка 404 ошибки поможет вам удержать пользователей на сайте и не отпугнуть их от дальнейших действий.

Вот несколько нестандартных решений оформления страницы обработки ошибки 404 различными ресурсами:

Сайт eu.blizzard.com

Корректная обработка ошибки 404 различными ресурсами

 Сайт chrisjennings.com

404 ошибка - сайт не найден

 Сайт jhuskisson.com

Страница не найдена, обработка 404 ошибки

Вернуться назад

  • 10.07.2012
  • веб-дизайн

Корректная обработка ошибки 404

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

Правильная обработка страницы 404 ошибки

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

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

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

Как сделать страницу ошибки 404 максимально полезной?

  1. Дизайн страницы ошибки не должен отличаться от остального дизайна веб-сайта, включая логотип,  цветовую схему, навигацию и т.п.
  2. Сделайте страницу информативной для пользователя. Для этого на нее можно пометить  следующие элементы:
    • ссылку на главную страницу сайта
    • форму поиска по сайту
    • самые популярные страницы сайта(топ-10)
    • ссылку на карту сайта
  3. Простая, а порой даже забавная обработка страницы 404 ошибки, поможет задержать на сайте пользователя. Есть много сайтов тому подтверждением
  4. Сообщите об ошибке в дружелюбной манере. «Упс! Извините, мы не можем найти данную страницу!» звучит приятнее, чем «Ошибка 404 – страница не найдена»

Как реализуется обработка 404 ошибки?

Во-первых, необходимо запретить индексацию данной страницы  поисковыми роботами. Для этого необходимо убедиться, что возвращается правильный http статус ошибки, тогда поисковики ее проигнорируют. Но для надежности лучше запретить  страницу в файле robots.txt , добавив в него всего одну строку:

Disallow: /404.html

Во-вторых,  чтобы отображалась  собственная страница 404 ошибки в файле .htaccess (для сервера Apache) необходимо прописать следующее:

ErrorDocument  404 / 404-error.html

где 404-error.html и есть специально созданная страница-обработчик ошибки.

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

Как бороться с возникновением ошибки 404 на сайте?

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

Грамотная обработка 404 ошибки поможет вам удержать пользователей на сайте и не отпугнуть их от дальнейших действий.

Вот несколько нестандартных решений оформления страницы обработки ошибки 404 различными ресурсами:

Сайт eu.blizzard.com

Корректная обработка ошибки 404 различными ресурсами

 Сайт chrisjennings.com

404 ошибка - сайт не найден

 Сайт jhuskisson.com

Страница не найдена, обработка 404 ошибки

Вернуться назад

  • 10.07.2012
  • веб-дизайн

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

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

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

  • Отсутствует файл favicon.ico, который запрашивается браузером при каждом входе на страницу. Этот файл требуется, чтобы появилось изображение перед URL страницы в адресной строке браузера.
  • Отсутствует файл robots.txt. Он создается для роботов поисковиков, которые запрашивают его, когда выполняются запросы сайта. Это позволяет более грамотно распределять ресурсы поискового робота, указывая ему на страницы какие следует обойти, а какие нет.
  • Отсутствует файл javascript. Если в html-коде присутствует ссылка на данный файл, а сам файл отсутствует, то возникнет ошибка.

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

Этапы обработки ошибки 404

  • Пользователь получает ошибку сервера.
  • Уточняется, какая именно ошибка произошла.
  • В случае 404 ошибки, происходит ее обработка, которая выполняет следующие действия:
  • устанавливает кода ошибки 404.
  • создает документ из шаблона.
  • удаляет код ошибки с сервера.

Также проводится проверка обработки страниц 404.

Очень часто сервером хостинга является Apache, в таком случае, в файл .htaccess следует добавить код:

ErrorDocument 404 /404.html

Где 404.html — это страница, сообщающая об ошибке, а .htaccess – это файл, содержащий правила для работы сервера.

В ситуации, когда сервером является IIS, для устранения ошибки нужно в разделе настроек менеджера Error Pages найти файл web.config и прописать код обработки ошибок:

error statusCode="404" prefixLanguageFilePath="" path="/404.php" responseMode="ExecuteURL" /

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

Отслеживать появление и обработку ошибок 404 вы можете в файле error_log, он покажет вам, каких файлов не хватает на сайте. Это поможет избежать ссылок на такие несуществующие файлы.

Стоит отметить, что описанная выше директива ErrorDocument способна обрабатывать не только 404 ошибку, но и все остальные.

Сергей Коваль

Опубликовано: 9 ноября 2021

Ошибка 404: проверка, настройка и оформление

Разбираемся, почему возникает ошибка 404 и как обратить ее появление в свою пользу

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

Однако вы можете изменить его решение и обратить ошибку 404 в свою пользу. Как это сделать, узнаете из нашей статьи.

Причины возникновения ошибки 404

Ошибка 404 – это не результат неправильной работы сайта. Ее причинами могут быть:

  • ошибки и опечатки при ручном вводе или копировании адреса;
  • нарушение внутренней перелинковки;
  • переход по ссылке на удаленную или скрытую страницу;
  • переход по ссылке на страницу, к которой у пользователя нет доступа.

Ошибка 404 довольно неприятное явление для владельца сайта, она имеет ряд негативных последствий:

  • Пользователи покидают ваш сайт так и не узнав о ваших услугах, товарах или других возможностях, которые он предлагает.
  • Ваш сайт теряет посещения, отчего страдает статистика, а значит и ранжирование сайта.
  • У пользователей складывается негативное впечатление о вашем ресурсе.

К сожалению, возникновение ошибки 404 в большинстве случаев зависит не от владельца сайта. Однако есть способы, как сделать страницу ошибки полезной для себя и своего ресурса.

Как обработать страницу ошибки 404?

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

Позаботьтесь об оформлении страницы. Она должна соответствовать сайту в целом и свидетельствовать о серьезности и солидности ресурса. Разместите на странице свои логотипы, оформите в единой с сайтом цветовой схеме.

Сделайте страницу полезной для посетителя, то есть разместите на ней элементы, которые помогут ему перейти к полезной информации. Для этого на страницу ошибки 404 следует поместить:

  • ссылку, ведущую на главную страницу вашего сайта, в каталог или к другой полезной по вашему мнению информации;
  • форму поиска для того, чтоб посетители могли быстро найти любые данные, введя соответствующий запрос;
  • ссылки для перехода на самые популярные страницы вашего сервиса, например, оформив их каталогом или в виде рейтинга ТОП-10;
  • ссылку на карту сайта;
  • рекламную и полезную информацию, например, объявление о скидках, новых товарах или рубриках.

Довольно интересными идеями, которые привлекут внимание пользователя и вызовут интерес, станут необычные или смешные картинки. Проявите креатив в этом вопросе. Также внимание привлекают и сообщения в нестандартной, юмористической форме. Например: Ой, мы не можем найти эту страницу, но раз уж вы здесь, посетите нашу распродажу. Или: Упс, что-то пошло не так, может вам будет интересна следующая информация?

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

Чтобы ошибка 404 не отразилась на популярности сайта, ее следует настроить.

Для начала отключите индексацию данной страницы поисковыми роботами, а лучше запретите ее. Тогда поисковики будут игнорировать эту страницу вашего сайта и не направлять посетителей на нее по недоразумению. Чтобы запретить страницу, найдите файл robots.txt и добавьте в него всего одну строчку: Disallow: /404.html.

Далее следует заменить стандартную страницу на собственную уникальную разработку. Для этого найдите файл с расширением .htaccess и внесите в него следующую строку: ErrorDocument 404 / 404-error.html. Где 404-error.html – это и будет URL созданной вами оригинальной страницы для обработки ошибки.

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

Как минимизировать вероятность возникновения ошибки 404

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

Для обнаружения битых ссылок может пригодиться и специальное программное обеспечение.

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

Запомните, от ошибки 404 не защищен ни один ресурс. Однако грамотная ее обработка поможет удержать посетителей и не скажется на статистике и ранжировании сайта.

Ошибка с кодом 404 появляется у пользователя при попытке открыть страницу, которой не существует на сайте. Виной тому может быть битая ссылка или просто неверно введенный адрес, однако сама проблема появляется довольно часто, так что вопрос, как исправить ошибку 404, возникает как у владельцев сайтов, так и у обычных пользователей.

Причины появления ошибки с кодом 404

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

  1. Неверный адрес. Чаще всего появляется, когда юзер вручную вводит адрес страницы или пытается перейти в несуществующий раздел сайта.
  2. Удаленная страница. Иногда страницы удаляются с сайта его владельцем, однако из поисковика они не пропадают еще некоторое время. Кроме того, прямые ссылки могут храниться в закладках у некоторых пользователей. Соответственно, при переходе и появится соответствующее уведомление об ошибке сервера.
  3. Битая ссылка. Такая страница когда-то действительно существовала, однако сбой произошел при перелинковке, и теперь ссылка ведет в никуда, что и влияет на возникновение проблемы.
  4. Проблемы функционирования сервера. Последняя причина появляется крайне редко и связана со сбоями на сервере, где размещен сайт.

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Поиск битых ссылок на сайте

Если вы являетесь владельцем сайта, можно проверить наличие битых ссылок и удаленных страниц при помощи специальных онлайн-сервисов или программ. Существует несколько популярных инструментов, о которых и пойдет речь далее.

Яндекс.Вебмастер

Проще всего использовать сайт Яндекс.Вебмастер. Потребуется авторизоваться в сервисе и добавить собственный сайт, выполнив простые инструкции, которые будут отображаться на экране. После этого выполните такую последовательность действий:

Проверка сайта через Яндекс.Вебмастер при решении проблем с ошибкой 404

  1. Через левое меню откройте раздел «Индексирование».
  2. Там вас интересует категория «Страницы в поиске».
  3. Снизу перейдите на вкладку «Исключительные страницы».
  4. Задайте фильтрацию, чтобы сначала отображались результаты, где присутствует «ошибка 404: страница не найдена».

Google Search Console

Онлайн-сервис от известной компании Google Search Console функционирует примерно по такому же принципу, а для поиска проблемных страниц пользователю потребуется выполнить следующие действия:

Проверка сайта через Google Search Console при решении проблем с ошибкой 404

  1. Выполните вход и добавьте свой сайт. 
  2. Откройте раздел «Сканирование».
  3. Перейдите к категории «Ошибки сканирования».
  4. Используйте фильтр или самостоятельно ознакомьтесь с присутствующими ошибками.

Screaming Frog

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

Проверка сайта через Screaming Frog при решении проблем с ошибкой 404

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

Исправление ошибки 404

С принципом обнаружения проблемных страниц все понятно, однако как исправить ошибку 404 Page Not Found? Здесь все зависит непосредственно от возникшей ситуации, а также того, используется ли на сайте CMS. Давайте по очереди разберем каждую ситуацию.

При использовании CMS

Сейчас многие сайты создаются при помощи CMS. Это может быть WordPress, Joomla, 1С-Битрикс или какие-либо другие системы управления содержимым. Если проблема возникает на таком сайте, а на экране при переходе к сайту вы видите следующее изображение, значит, потребуется выполнить ряд действий для исправления неполадки.
Появление ошибки 404 от хостинга при использовании CMSВ первую очередь перейдите в корневую папку сайта и создайте там документ с расширением .htaccess. Он должен быть текстовым. Его содержимое зависит от конкретной используемой CMS. То есть необходимо прописать стандартные директивы, которые вы можете найти на официальном сайте reg.ru. Другие полезные материалы по настройке htaccess вы найдете тут и тут. 

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

Описанная выше ситуация подразумевает, что ошибку 404 выдает сам хостинг, однако бывает, что она отображается от самой CMS, а в браузере это выглядит примерно следующим образом:

Появление ошибки 404 от CMS

В таких ситуациях вам необходимо проверить каждое название ссылки на правильность ввода, а также убедиться в том, что установленные SEO-плагины функционируют нормально и не влияют на проблемную генерацию ссылок. После проверки каждой ссылки ошибка http 404 должна исчезнуть.

Без использования CMS

Иногда сайты функционируют и без использования CMS. В таких ситуациях метод решения будет другим, поскольку, скорее всего, причина возникновения неполадки связана с отсутствием файлов в папке сайта или их неправильном расположении.
Появление ошибки 404 на сайте без использования CMSДля начала откройте корневую папку с файлом через панель хостинга и убедитесь в наличии всех необходимых элементов (например, html-страниц). В случае отсутствия потребуется загрузить их вручную и проверить, исчезла ли ошибка. Если же она сохранилась или файлы изначально находились в правильном месте, обращайтесь напрямую в техническую поддержку хостинга.

Только что мы разобрались с тем, что значит ошибка 404 Not Found, а также рассмотрели методы ее решения для разных ситуаций. Владельцу сайта нужно внимательно подойти к этому вопросу и всегда быть аккуратным при составлении адресов ссылок. От обычного же юзера требуется только соблюдать правильность ввода URL, если речь идет о ручном наборе в адресной строке браузера.

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

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

ошибка 404

Причины возникновения ошибок 404

Как правило, появление такой ошибки вызывают:

  • перемещение страницы сайта без перенаправления старого URL-адреса на новый;
  • ссылка на страницу, которая уже удалена;
  • неправильное написание URL в адресной строке или ссылке;
  • появление большого количества ошибок 404 может быть вызвано вирусной атакой (например, размещением на сайте дорвеев).

Как ошибки 404 влияют на ранжирование сайта?

Хотя ошибки 404 сами по себе не являются фактором ранжирования, они могут отрицательно повлиять на SEO-продвижение.

Даже единичные битые ссылки снижают поведенческие характеристики сайта, вызывая уход посетителей и рост показателя отказов. Это является негативным сигналом для поисковых систем. Официальные источники Яндекса и Google рекомендуют избегать неработающих ссылок на сайте. Большое количество таких ошибок негативно влияет на его ранжирование. Чем больше неработающих ссылок на вашем сайте, тем сложнее будет Google и другим поисковым системам сканировать сайт. Поисковые системы считают, что за состоянием такого веб-ресурса никто не следит, и понижают его позиции в результатах поиска. Страницы, отдающие ответ с ошибкой 404, исключаются из индекса (базы данных поисковой системы).

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

Чтобы наличие на сайте таких страниц не привело к ухудшению ранжирования ресурса, они должны быть правильно настроены — давать код ответа 404 (Not Found). Именно такой ответ сообщает поисковому роботу, что данной страницы не существует, и предотвращает ее индексирование.

Страница может выглядеть нормальной, но при этом давать ответ 404 или наоборот — уже несуществующая страница возвращает ответ 200 (страница доступна). Это вводит в заблуждение поисковые системы.

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

Лучший способ сделать так, чтобы посетители не попадали на страницу 404 — регулярно проверять наличие на сайте так называемых «битых» ссылок, которые ведут на несуществующие страницы. Это касается как внутренней перелинковки, так и внешних ссылок на другие ресурсы.

Как обнаружить ошибки 404 с помощью сервиса Labrika

Отчет «Ошибки 4хх» вы сможете найти в левом боковом меню в разделе «Технический аудит».

ошибка 404

Отчет содержит:

  • URL-адрес страницы, которая отдала код ошибки 4xx.
  • Информацию о коде ответа страницы.
  • Кнопку для проверки HTTP-статуса — при нажатии на неё откроется сервис проверки HTTP-заголовков страниц.

ошибка 404

  • Список страниц, с которых ведут ссылки на данную страницу с ошибкой 404 — открывается при нажатии на кнопку «Показать».

ошибка 404

Как исправить ошибки 404?

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

  • Самый простой способ исправить ошибки 404 – перенаправление. Если контент переместился, настройте перенаправление на новый адрес. В случае удаления содержимого перенаправьте пользователей на другую релевантную страницу на вашем сайте. По возможности делайте перенаправление на что-то актуальное и полезное, а не просто отправляйте обратно на свою домашнюю страницу.
  • Восстановление страницы. Если удаленная страница продолжает пользоваться высоким спросом, и нет другого подходящего контента для переадресации пользователей, рассмотрите возможность восстановления исходной страницы.
  • Исправление ссылок. При наличии на вашем сайте неработающих ссылок отредактируйте их так, чтобы ссылки указывали на правильный URL-адрес.
  • Если вы безвозвратно удалили содержимое страницы и не планируете заменять его другим связанным контентом, позвольте старому URL-адресу возвращать код ответа 404.
  • Создайте информативную страницу ошибки 404. Она должна сообщить пользователю, что документ по этому адресу отсутствует, и предоставить возможность перейти на другие разделы сайта. Иначе посетители могут уйти с веб-ресурса, что приведет к потере трафика и ухудшению поведенческих факторов.

ошибка 404

Более подробно об оформлении страницы 404-й ошибки вы можете прочитать в отдельной статье нашего сайта.

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

Довольно часто встречаются случаи, когда ошибки 404 приобретают характер систематических ошибок:

  • Отсутствие файла favicon.ico. Когда вы открываете любую страницу, браузер запрашивает изображение с именем favicon.ico, которое отображается в адресной строке перед адресом страницы.

  • Отсутствие файла robots.txt. Данный файл запрашивают роботы поисковиков регулярно перед каждым выполнением запросов сайта.

  • Отсутствующий javascript файл, когда на этот файл имеется ссылка в шаблоне HTML-кода сайта.

Способ решения этих проблем достаточно прост – необходимо убедиться, что файлы, которые запрашивает браузер, присутствуют на сервере. Устранение этой проблемы увеличивает скорость загрузки примерно в 4 раза.

Следует обратить внимание, что обработка ошибки 404 htaccess полностью исключена из настройки системы. Поэтому пользователю необходимо обрабатывать её самостоятельно.

Сообщение о 404 ошибка должно помогать читателю сайта с определением дальнейших действий

Этапы обработки ошибки 404 осуществляются в таком виде:

  • Пользователю поступает ошибка сервера;

  • Идет распознание типа ошибки;

  • Если это ошибка 404, ошибка обрабатывается.

Шаги обработки ошибки 404 htaccess:

  • Установка кода ошибки 404;

  • Создание документа из шаблона;

  • Удаление кода ошибки с сервера. 

Решение проблемы также зависит от сервера, установленного на хостинге.

В том случае, если это сервер Apache, нужно вставить в файл .htaccess следующее:

ErrorDocument 404 /404.html

Рассмотрим код детальнее:

  • 404.html – страница, которая сообщает об ошибке;

  • .htaccess — файл, который содержит правила для сервера Apache.

Если же на хостинге установлен сервер IIS, в таком случае устранять ошибку лучше с помощью менеджера. В настройках сайта выбираем следующее:

HTTP Features->Error Pages

После ищем нужный заголовок и редактируем. В файле Web.config обработка ошибок прописывается так:

<error statusCode="404" prefixLanguageFilePath="" path="/404.php" responseMode="ExecuteURL" />

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

Также вы можете наблюдать появление ошибки 404 в файле error_log и прослеживать, какие документы отсутствуют на сервере, чтобы исключить битые ссылки.

После решения проблемы создайте файл 404.html, в котором будет описание того, что делать пользователю при возникшей проблеме. Советы и указания всегда пригодятся вашему пользователю.

Важно, что директива ErrorDocument может обрабатывать не только ошибку 404, но и все остальные ошибки. К примеру, такими способами можно обработать 403 ошибку.

Предложить идею урока:

Опубликовано:
10 апреля 2015

Обновлено:
11 апреля 2019

73 467

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

404-not-found

404 NOT FOUND – что означает?

Определение: 404 ошибка сервера (not found) — самая распространенная ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.”

Для чего нужна 404 страница?

1. Поисковому роботу необходимо сообщить, что такой страницы не существует, для этого используется 404 код ответа сервера. Это очень важно, чтобы не плодились дубли и не размывать релевантность страниц в индексе поисковых систем.

Проверить ответ это очень просто, наберите несуществующий адрес страницы тут – http://bertal.ru/.

not-found-404

2. Пользователю необходимо сообщить, что запрашиваемой страницы больше (или вообще) не существует, и предоставить возможность работать с сайтом дальше.

Как настроить ответ сервера?

404 ошибка сервера через htaccess

Если Ваш сервер или CMS не настроены атоматически, то придётся это сделать Вам самим – добавьте в htaccess строчку:

1
ErrorDocument 404 http://www.site.ru/404.php

Теперь, когда пользователь введёт неверный адрес, то он будет направлен на этот адрес. Страница может располагаться где угодно, но мы для примера поместили ее в корне сайта: /404.php.

404 ошибка сервера в PHP

Велосипеда изобретать не надо – существует специальная функция header, которая успешно поможет Вам это сделать.

1
header(«HTTP/1.0 404 Not Found»);

Как должна выглядеть страница 404?

  • В дизайне сайта (а не страница по умолчанию вашего хостинга)
  • Содержать информацию о том, что произошла ошибка
  • Иметь форму поиска по сайту
  • Иметь небольшую карту сайта с основными разделами.

Креативные 404 страницы – вред или польза?

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

404

Как отследить, сколько таких пользователей попадают на страницу 404?

Яндекс.Метрика

Для этого удобно использовать “Параметры визитов”.
В код счётчика необходимо добавить строчку: params:window.yaParams||{ }});

Таким образом, должно получиться как-то так:

1
2
3
4
5
6
7
8
w.yaCounterХХХХХХХХ = new Ya.Metrika({id:ХХХХХХХХ,
                    webvisor:true,
                    clickmap:true,
                    trackLinks:true,
                    accurateTrackBounce:true,
                    trackHash:true,
                    ut:"noindex",
                    params:window.yaParams||{ }});

На самой же странице 404 в любом месте необходимо разместить следующий JS-код:

1
2
3
var url = document.location.pathname + document.location.search	
var url_referrer = document.referrer;
var yaParams = {error404: {page: url, from: url_referrer}};

Где url – текущий адрес страницы 404, а url_referrer – адрес, с которого на него попали. Таким образом, мы в Яндекс.Метрике сможем отлеживать не только все 404 страницы, но и адреса, по которым на неё перешли.

Отчёт в Метрике необходимо смотреть тут: все отчеты -> содержание -> параметры визитов.

params

Подробнее о параметрах визита в Яндекс.Метрике: http://help.yandex.ru/metrika/content/visit-params.xml

Google.Analytics

Для отслеживания ошибок используем “события”. Добавляем JS-код в тело страницы:

1
2
3
4
5
6
7
8
9
jQuery(document).ready(function() { 
var url = document.location.pathname + document.location.search	
var url_referrer = document.referrer;
ga('send', {'hitType': 'event', 
	'eventCategory': 'page-404', 
	'eventAction': url, 
	'eventLabel': url_referrer
	});
});

Где hitType – тип события, eventCategory – категория, eventAction – адрес ошибки, url_referrer – откуда на 404 страницу попали.

Отчёт в Гугл.Аналитикс: Поведение -> События -> Обзор.

events

Подробнее о настройке событий в Аналитикс: https://support.google.com/analytics/answer/1033068?hl=ru

Как использовать полученные данные?

Если ошибки 404 внутри сайта – исправьте все ссылки на правильные или уберите вовсе. Если эти ссылки с внешних ресурсов? и Вам никак не повлиять на них, то поставьте 301 редирект на максимально релевантные страницы. Любите своих клиентов и не заставляйте их думать или что-то искать на Вашем сайте.

В статье мы расскажем, что означает ошибка 404 на сайте. Также она может называться:

  • 404 page not found,
  • http error 404,
  • error 404.

Ниже мы опишем, почему возникает ошибка 404, а также как её отследить и исправить.

404 ошибка (http error 404) — что это значит?

Ошибка 404 page not found — это код ответа сервера. Что это значит?

Когда вы вводите адрес сайта, браузер запрашивает его стартовую страницу у сервера. Если сервер не может найти страницу, он сообщает об этом браузеру с помощью кода 404. Это сообщение отображается на экране пользователя в браузере.

Почему такое может произойти? Есть несколько возможных причин:

  1. Вы допустили ошибку при вводе адреса страницы или при открытии файла в браузере. Или браузеру не удалось найти IP-адрес сервера. Сервер не может найти и выдать данные потому, что вы дали ему неправильные «координаты». В таком случае вам достаточно просто исправить ошибку в URL-адресе, и вместо страницы с ошибкой 404 появятся искомые страница/файл.
  2. Данные (страница или файл) не размещены на сервере, или CMS неверно отвечает на запрос пользователя. В этом случае дело обстоит сложнее и быстро справиться с проблемой не получится. Чтобы устранить ошибку 404, определите, как создавался сайт, на котором обнаружена ошибка (на CMS или без использования CMS). От этого будет зависеть способ решения проблемы.

Мы рассмотрим, что делать с ошибкой 404 и как исправить.


Как убрать ошибку 404 на сайте, созданном на CMS (WordPress, Joomla, 1С-Битрикс и т.д.)

На сайтах, созданных с использованием CMS, встречаются различные страницы с ошибкой 404 (http status 404). В зависимости от типа страницы с ошибкой различаются причины возникновения и пути решения проблемы:

  • Если вы видите на своём сайте стандартную ошибку 404 REG.RU:

В большинстве случаев проблема связана с отсутствием конфигурационного файла .htaccess. Как избавиться от ошибки 404? Создайте в корневой папке сайта пустой текстовый файл с расширением .htaccess и добавьте в него стандартные директивы для используемой CMS. Стандартные директивы приведены в статье: Файлы .htaccess для популярных CMS.

Важно: в панели управления cPanel файл .htaccess по умолчанию скрыт (т.е. он существует, но не виден). Следуйте инструкции, чтобы включить отображение файла. Затем сверьте его содержимое со стандартным.

Если файл .htaccess существует и его содержимое корректно, а ошибка 404 not found сохраняется, обратитесь в техническую поддержку.

  • Если вы видите иную страницу ошибки, которую отдает CMS сайта. Например:

Ошибка на WordPress

Пользовательская ошибка 404 not found

Возможно, страница не создана или не опубликована на этапе размещения сайта в админке CMS. Также ошибка может быть связана с формированием «человекопонятных» ЧПУ-ссылок с помощью SEO-плагинов. Чтобы избавиться от проблемы, необходимо обратиться к веб-разработчикам сайта или на тематические форумы, на которых представлена необходимая техническая информация (ошибка http 404).


Как быстро устранить ошибку 404 на сайте, созданном без использования CMS

На сайтах, созданных без использования CMS, код ошибки 404 отображается следующим образом:

Что означает это сообщение? Запрашиваемые страница/файл отсутствуют или размещены в неправильной папке (не в корневой папке сайта).

Что делать? Откройте корневую папку сайта в панели управления хостингом и проверьте, находятся ли в ней файлы вашего сайта.

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

Как находить и мониторить код ошибки 404?

Если вы владелец сайта, вы можете найти страницы с ошибкой с помощью специальных сервисов. Самые популярные сервисы:

  • Яндекс.Вебмастер,
  • Google Search Console,
  • Screaming Frog.

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


Яндекс.Вебмастер

  1. Авторизуйтесь в Яндекс.Вебмастер.

  2. Перейдите в раздел Индексирование — Страницы в поиске:

HTTP status 404 — что это

  1. Выберите Исключенные страницы:
  1. Добавьте фильтр, при котором отобразятся результаты с ошибкой «404 page not found»:


Google Search Console

  1. Авторизуйтесь в Google Search Console.

  2. Разверните блок Индекс и выберите Покрытие:

404 ошибка: что это

  1. Используйте фильтр, который покажет код ошибки 404. Для этого перейдите в раздел Сведения и кликните Отправленный URL не найден (ошибка 404):

Ошибка 404: что значит и как исправить


Screaming Frog

  1. Загрузите программу с официального сайта.

  2. Установите её на компьютер.

  3. Откройте программу, введите ссылку на сайт и нажмите Start:

  1. Перейдите во вкладку Response Code. Из выпадающего списка выберите фильтр Client Error (4xx):

Открывается только главная страница сайта, на внутренних страницах ошибка 404 или 500

Рассмотрим, что значит и как исправить ошибку отображения внутренних страниц сайта (error 404 или 500). Причиной проблемы является отсутствие файла .htaccess (либо он пустой, либо в нем не хватает необходимых директив для работы CMS). Решить проблему может замена текущего файла .htaccess стандартным для данной CMS.

На хостинге Linux

Если у вас ISPmanager, проверьте, не включены ли Автоподдомены. Если они включены, отключите их, проверьте актуальность проблемы.

В остальных случаях для устранения внутренней ошибки 404 или 500, перейдите в корневую папку сайта: Как узнать корневую папку сайта
Создайте файл .htaccess (или замените его) со следующим содержимым:


Файл .htaccess для Joomla

##

# @version $Id: htaccess.txt 14401 2010-01-26 14:10:00Z louis $
# @package Joomla
# @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##
#####################################################
#  READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
#
#####################################################

##  Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

#
#  mod_rewrite in use

RewriteEngine On

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
## Deny access to extension xml files (uncomment out to activate)
#<Files ~ ".xml$">
#Order allow,deny
#Deny from all
#Satisfy all
#</Files>
## End of deny access to extension xml files
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

#  Uncomment following line if your webserver's URL
#  is not directly related to physical file paths.
#  Update Your Joomla! Directory (just / for root)

# RewriteBase /


########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|.php|.html|.htm|.feed|.pdf|.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section


Файл .htaccess для WordPress

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


Файл .htaccess для HostCMS

Options +FollowSymlinks
AddDefaultCharset Off

<IfModule mod_php4.c>

 php_flag magic_quotes_gpc off

 php_flag magic_quotes_runtime off

 php_flag register_globals off

</IfModule>

<IfModule mod_php5.c>

 php_flag magic_quotes_gpc off

 php_flag magic_quotes_runtime off
 php_flag register_globals off
</IfModule>
<IfModule mod_dir.c>
 DirectoryIndex index.php index.htm index.html
</IfModule>
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ /index.php
</IfModule>


Файл .htaccess для Bitrix

Options -Indexes 

ErrorDocument 404 /404.php


<IfModule mod_php5.c>

  php_flag allow_call_time_pass_reference 1

  php_flag session.use_trans_sid off

  #php_value display_errors 1

  #php_value mbstring.func_overload 2
  #php_value mbstring.internal_encoding UTF-8
</IfModule>

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

<IfModule mod_dir.c>
  DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
</IfModule>


Файл .htaccess для ModX

# MODx supports Friendly URLs via this .htaccess file. You must serve web

# pages via Apache with mod_rewrite to use this functionality, and you must

# change the file name from ht.access to .htaccess.

#

# Make sure RewriteBase points to the directory where you installed MODx.

# E.g., "/modx" if your installation is in a "modx" subdirectory.

#

# You may choose to make your URLs non-case-sensitive by adding a NC directive

# to your rule: RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,NC]

RewriteEngine On
RewriteBase /

# Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
#RewriteCond %{HTTP_HOST} .
#RewriteCond %{HTTP_HOST} !^example-domain-please-change.com [NC]
#RewriteRule (.*) http://example-domain-please-change.com/$1 [R=301,L]
#
# or for the opposite domain.com -> www.domain.com use the following
# DO NOT USE BOTH
#
#RewriteCond %{HTTP_HOST} .
#RewriteCond %{HTTP_HOST} !^www.example-domain-please-change.com [NC]
#RewriteRule (.*) http://www.example-domain-please-change.com/$1 [R=301,L]
#
# Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
# https://www.domain.com when your cert only allows https://secure.domain.com
#RewriteCond %{SERVER_PORT} !^443
#RewriteRule (.*) https://example-domain-please-change.com.com/$1 [R=301,L]
#
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
#
# Make sure .htc files are served with the proper MIME type, which is critical # for XP SP2. Un-comment if your host allows htaccess MIME type overrides.
#AddType text/x-component .htc
#
# If your server is not already configured as such, the following directive
# should be uncommented in order to set PHP's register_globals option to OFF.
# This closes a major security hole that is abused by most XSS (cross-site
# scripting) attacks. For more information: http://php.net/register_globals
#
# To verify that this option has been set to OFF, open the Manager and choose
# Reports -> System Info and then click the phpinfo() link. Do a Find on Page
# for "register_globals". The Local Value should be OFF. If the Master Value
# is OFF then you do not need this directive here.
#
# IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
#
# Your server does not allow PHP directives to be set via .htaccess. In that
# case you must make this change in your php.ini file instead. If you are
# using a commercial web host, contact the administrators for assistance in
# doing this. Not all servers allow local php.ini files, and they should
# include all PHP configurations (not just this one), or you will effectively
# reset everything to PHP defaults. Consult www.php.net for more detailed
# information about setting PHP directives.
#
#php_flag register_globals Off
#
# For servers that support output compression, you should pick up a bit of
# speed by un-commenting the following lines.
#
#php_flag zlib.output_compression On
#php_value zlib.output_compression_level 5
#
# The following directives stop screen flicker in IE on CSS rollovers. If
# needed, un-comment the following rules. When they're in place, you may have
# to do a force-refresh in order to see changes in your designs.
#
#ExpiresActive On
#ExpiresByType image/gif A2592000
#ExpiresByType image/jpeg A2592000
#ExpiresByType image/png A2592000
#BrowserMatch "MSIE" brokenvary=1
#BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
#BrowserMatch "Opera" !brokenvary
#SetEnvIf brokenvary 1 force-no-vary


Файл .htaccess для Drupal

#

# Apache/PHP/Drupal settings:

#


# Protect files and directories from prying eyes.

<FilesMatch ".(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(.php)?|xtmpl)$|^(..*|Entries.*|Repository|Root|Tag|Template)$">

  Order allow,deny

</FilesMatch>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

# Follow symbolic links in this directory.
Options +FollowSymLinks

# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php

# Force simple error message for requests for non-existent favicon.ico.
<Files favicon.ico>
  # There is no end quote below, for compatibility with Apache 1.3.
  ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>

# Set the default handler.
DirectoryIndex index.php index.html index.htm

# Override PHP settings that cannot be changed at runtime. See
# sites/default/default.settings.php and drupal_initialize_variables() in
# includes/bootstrap.inc for settings that can be changed at runtime.

# PHP 5, Apache 1 and 2.
<IfModule mod_php5.c>
  php_flag magic_quotes_gpc                 off
  php_flag magic_quotes_sybase              off
  php_flag register_globals                 off
  php_flag session.auto_start               off
  php_value mbstring.http_input             pass
  php_value mbstring.http_output            pass
  php_flag mbstring.encoding_translation    off
</IfModule>

# Requires mod_expires to be enabled.
<IfModule mod_expires.c>
  # Enable expirations.
  ExpiresActive On

  # Cache all files for 2 weeks after access (A).
  ExpiresDefault A1209600

  <FilesMatch .php$>
    # Do not allow PHP scripts to be cached unless they explicitly send cache
    # headers themselves. Otherwise all scripts would have to overwrite the
    # headers set by mod_expires if they want another caching behavior. This may
    # fail if an error occurs early in the bootstrap process, and it may cause
    # problems if a non-Drupal PHP file is installed in a subdirectory.
    ExpiresActive Off
  </FilesMatch>
</IfModule>

# Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # Block access to "hidden" directories whose names begin with a period. This
  # includes directories used by version control systems such as Subversion or
  # Git to store control files. Files whose names begin with a period, as well
  # as the control files used by CVS, are protected by the FilesMatch directive
  # above.
  #
  # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is
  # not possible to block access to entire directories from .htaccess, because
  # <DirectoryMatch> is not allowed here.
  #
  # If you do not have mod_rewrite installed, you should remove these
  # directories from your webroot or otherwise protect them from being
  # downloaded.
  RewriteRule "(^|/)." - [F]

  # If your site can be accessed both with and without the 'www.' prefix, you
  # can use one of the following settings to redirect users to your preferred
  # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
  #
  # To redirect all users to access the site WITH the 'www.' prefix,
  # (http://example.com/... will be redirected to http://www.example.com/...)
  # uncomment the following:
  # RewriteCond %{HTTP_HOST} !^www. [NC]
  # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  #
  # To redirect all users to access the site WITHOUT the 'www.' prefix,
  # (http://www.example.com/... will be redirected to http://example.com/...)
  # uncomment the following:
  # RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
  # RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

  # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
  # VirtualDocumentRoot and the rewrite rules are not working properly.
  # For example if your site is at http://example.com/drupal uncomment and
  # modify the following line:
  # RewriteBase /drupal
  #
  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
  # RewriteBase /

  # Pass all requests not referring directly to files in the filesystem to
  # index.php. Clean URLs are handled in drupal_environment_initialize().
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^ index.php [L]

  # Rules to correctly serve gzip compressed CSS and JS files.
  # Requires both mod_rewrite and mod_headers to be enabled.
  <IfModule mod_headers.c>
    # Serve gzip compressed CSS files if they exist and the client accepts gzip.
    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}.gz -s
    RewriteRule ^(.*).css $1.css.gz [QSA]

    # Serve gzip compressed JS files if they exist and the client accepts gzip.
    RewriteCond %{HTTP:Accept-encoding} gzip
    RewriteCond %{REQUEST_FILENAME}.gz -s
    RewriteRule ^(.*).js $1.js.gz [QSA]

    # Serve correct content types, and prevent mod_deflate double gzip.
    RewriteRule .css.gz$ - [T=text/css,E=no-gzip:1]
    RewriteRule .js.gz$ - [T=text/javascript,E=no-gzip:1]

    <FilesMatch "(.js.gz|.css.gz)$">
      # Serve correct encoding type.
      Header append Content-Encoding gzip
      # Force proxies to cache gzipped & non-gzipped css/js files separately.
      Header append Vary Accept-Encoding
    </FilesMatch>
  </IfModule>
</IfModule>


Файл .htaccess для NetCat

AddDefaultCharset windows-1251
ErrorDocument 404 /netcat/require/e404.php
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ /netcat/require/e404.php?REQUEST_URI=$1 [L,QSA]
</ifModule>


Файл .htaccess для DLE

DirectoryIndex index.php
RewriteEngine On
RewriteBase /
# Редиректы
RewriteRule ^page/(.*)$ index.php?cstart=$1 [L]
# Сам пост
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html(/?)+$ engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html(/?)+$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&seourl=$3&seocat=$1 [L]
RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1&seourl=$3 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$1&newsid=$2&seourl=$3 [L]
RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1&seourl=$2 [L]

# За день
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2&day=$3 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&day=$3&cstart=$4 [L]
# За весь месяц
RewriteRule ^([0-9]{4})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&cstart=$3 [L]
# Вывод за весь год
RewriteRule ^([0-9]{4})(/?)+$ index.php?year=$1 [L]
RewriteRule ^([0-9]{4})/page/([0-9]+)(/?)+$ index.php?year=$1&cstart=$2 [L]
# вывод отдельному тегу
RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L]
RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]
# вывод для отдельного юзера
RewriteRule ^user/([^/]*)/rss.xml$ engine/rss.php?subaction=allnews&user=$1 [L]
RewriteRule ^user/([^/]*)(/?)+$ index.php?subaction=userinfo&user=$1 [L]
RewriteRule ^user/([^/]*)/page/([0-9]+)(/?)+$ index.php?subaction=userinfo&user=$1&cstart=$2 [L]
RewriteRule ^user/([^/]*)/news(/?)+$ index.php?subaction=allnews&user=$1 [L]
RewriteRule ^user/([^/]*)/news/page/([0-9]+)(/?)+$ index.php?subaction=allnews&user=$1&cstart=$2 [L]
RewriteRule ^user/([^/]*)/news/rss.xml(/?)+$ engine/rss.php?subaction=allnews&user=$1 [L]
# вывод всех последних новостей
RewriteRule ^lastnews/(/?)+$ index.php?do=lastnews [L]
RewriteRule ^lastnews/page/([0-9]+)(/?)+$ index.php?do=lastnews&cstart=$1 [L]
# вывод в виде каталога
RewriteRule ^catalog/([^/]*)/rss.xml$ engine/rss.php?catalog=$1 [L]
RewriteRule ^catalog/([^/]*)(/?)+$ index.php?catalog=$1 [L]
RewriteRule ^catalog/([^/]*)/page/([0-9]+)(/?)+$ index.php?catalog=$1&cstart=$2 [L]
# вывод непрочитанных статей
RewriteRule ^newposts(/?)+$ index.php?subaction=newposts [L]
RewriteRule ^newposts/page/([0-9]+)(/?)+$ index.php?subaction=newposts&cstart=$1 [L]
# вывод избранных статей
RewriteRule ^favorites(/?)+$ index.php?do=favorites [L]
RewriteRule ^favorites/page/([0-9]+)(/?)+$ index.php?do=favorites&cstart=$1 [L]
RewriteRule ^rules.html$ index.php?do=rules [L]
RewriteRule ^statistics.html$ index.php?do=stats [L]
RewriteRule ^addnews.html$ index.php?do=addnews [L]
RewriteRule ^rss.xml$ engine/rss.php [L]
RewriteRule ^sitemap.xml$ uploads/sitemap.xml [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/page/([0-9]+)/$ index.php?do=cat&category=$1&cstart=$2 [L]
RewriteRule ^([^.]+)/$ index.php?do=cat&category=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)/rss.xml$ engine/rss.php?do=cat&category=$1 [L]
RewriteRule ^page,([0-9]+),([^/]+).html$ index.php?do=static&page=$2&news_page=$1 [L]
RewriteRule ^print:([^/]+).html$ engine/print.php?do=static&page=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+).html$ index.php?do=static&page=$1 [L]


Файл .htaccess для Opencart

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]


Файл .htaccess для Webasyst

<FilesMatch ".md5$">
Deny from all
</FilesMatch>
DirectoryIndex index.php
Options -Indexes
# Comment the following line, if option Multiviews not allowed here
Options -MultiViews
AddDefaultCharset utf-8
<ifModule mod_rewrite.c>
RewriteEngine On
# Uncomment the following line, if you are having trouble
RewriteBase /
RewriteCond %{REQUEST_URI} !.(js|css|jpg|jpeg|gif|png|svg|ttf|eot|otf|woff|woff2)$ [or]
RewriteCond %{REQUEST_URI} apple-touch-icon.png$ [or]
RewriteCond %{REQUEST_METHOD} ^(POST|PUT|COPY|MOVE|DELETE|PROPFIND|OPTIONS|MKCOL)$ [or]
RewriteCond %{HTTP:Translate} ^.+$ [or]
RewriteCond %{HTTP_USER_AGENT} ^(DavClnt|litmus|gvfs|davfs|wdfs|WebDAV|cadaver|Cyberduck)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
</ifModule>
<ifModule mod_headers.c>
<FilesMatch ".(jpg|jpeg|png|gif|js|css|svg|ttf|eot|otf|woff|woff2)$">
Header set Cache-Control "max-age=3153600, public"
</FilesMatch>
</ifModule>

Если у вас хостинг Windows

На хостинге Windows файл .htaccess не поддерживается. Его функцию выполняет файл web.config. Если вы наблюдаете внутреннюю ошибку 404 или 500 на хостинге Windows, рекомендуем обратиться к разработчикам сайта или на тематические форумы с вопросом, как убрать 404, заменив файл web.config.

Что будет, если не исправлять ошибку 404

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

Во-вторых, есть риск потерять хорошую позицию в поисковой выдаче. Сама по себе страница с ошибкой 404 не вызывает у поисковой системы недоверия. Она просто удаляется из индексации. Однако там могли находиться ключевые слова, которые могли повлиять положительно на поисковую выдачу. Если на сайте много страниц с ошибкой, тогда поисковые роботы действительно могут отнестись с недоверием ко всему веб-ресурсу и сайт может потерять высокий рейтинг.

Сделайте страницу 404 полезной

Ошибка 404 (страница не найдена) может появиться в любое время. Важно, чтобы пользователь при входе на эту страницу не потерял доверия к сайту. Страницы с ошибкой 404 можно создавать самостоятельно. Например, если у вас сайт на WordPress или вы пользуетесь услугой REG.Site, страницу с ошибкой можно легко создать с помощью плагина 404page.

Вот несколько советов по созданию страницы:

  • дизайн этой страницы должен соответствовать всему ресурсу (цвет, шрифт, иллюстрации),
  • поместите ссылку на главную страницу,
  • добавьте дайджесты последних публикаций на сайте,
  • поместите контакты организации (номер телефона, адрес) и службы поддержки,
  • можно предложить действия для решения проблемы доступа к странице.

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

Если перечисленные способы не помогли исправить ошибку, обратитесь в службу поддержки REG.RU.

Видеосправка. Об ошибке 404 и как создать страницу для неё

При разработке проекта на ASP.NET MVC возникла необходимость сделать собственную страницу ошибки 404. Я рассчитывал, что справлюсь с этой задачей за несколько минут. Через 6 часов работы я определил два варианта ее решения разной степени сложности. Описание — далее.

В ASP.NET MVC 3, с которой я работаю, появились глобальные фильтры. В шаблоне нового проекта, уже встроено ее использование для отображения собственной страницы ошибок (через HandleErrorAttribute). Замечательный метод, только он не умеет обрабатывать ошибки с кодом 404 (страница не найдена). Поэтому пришлось искать другой красивый вариант обработки этой ошибки.

Обработка ошибки 404 через Web.config

Платформа ASP.NET предоставляет возможность произвольно обрабатывать ошибки путем нехитрой настройки файла Web.config. Для это в секцию system.web нужно добавить следующий код:

<customErrors mode="On" >
       <error statusCode="404" redirect="/Errors/Error404/" />
</customErrors>

При появлении ошибки 404 пользователь будет отправлен на страницу yoursite.ru/Errors/Error404/?aspxerrorpath=/Not/Found/Url. Кроме того, что это не очень красиво и удобно (нельзя отредактировать url), так еще и плохо для SEO — статья на habr.ru.
Способ можно несколько улучшить, добавив redirectMode=«ResponseRewrite» в customErrors:

<customErrors mode="On" redirectMode="ResponseRewrite" >
       <error statusCode="404" redirect="/Errors/Error404/" />
</customErrors>

В данном случае должен происходить не редирект на страницу обработки ошибки, а подмена запрошенного ошибочного пути содержимым указанной страницы. Однако, и здесь есть свои сложности. На ASP.NET MVC этот способ в приведенном виде не работает. Достаточно подробное обсуждение (на английском) можно прочитать в топике. Кратко говоря, этот метод основан на методе Server.Transfer, который используется в классическом ASP.NET и, соответственно, работает только со статическими файлами. С динамическими страницами, как в примере, он работать отказывается (так как не видит на диске файл  ‘/Errors/Error404/’). То есть, если заменить ‘/Errors/Error404/’ на, например, ‘/Errors/Error404.htm’, то описанные метод будет работать. Однако в этом случае не получится выполнять дополнительные действия по обработке ошибок, например, логирование.
В указанном топике было предложено добавить в каждую страницу следующий код:

Response.TrySkipIisCustomErrors = true;

Этот способ работает только с IIS 7 и выше, поэтому проверить этот метод не удалось — используем IIS 6. Поиски пришлось продолжить.

Танцы с бубном и Application_Error

Если описанный выше метод применить по каким-либо причинам не удается, то придется писать больше строк кода. Частичное решение приведено в статье.
Наиболее полное решение «с бубном» я нашел в топике. Обсуждение ведется на английском, поэтому переведу текст решения на русский.
Ниже приведены мои требования к решению проблемы отображения ошибки 404 NotFound:

  • Я хочу обрабатывать пути, для которых не определено действие.
  • Я хочу обрабатывать пути, для которых не определен контроллер.
  • Я хочу обрабатывать пути, которые не удалось разобрать моему приложению. Я не хочу, чтобы эти ошибки обрабатывались в Global.asax или IIS, потому что потом я не смогу сделать редирект обратно на мое приложение.
  • Я хочу обрабатывать собственные (например, когда требуемый товар не найден по ID) ошибки 404 в едином стиле.
  • Я хочу, чтобы все ошибки 404 возвращали MVC View, а не статическую страницу, чтобы потом иметь возможность получить больше данных об ошибках. И они должны возвращать код статуса 404.

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

Шаг 1: Создаем общее место для обработки ошибки 404

Это облегчит поддержку решение. Используем ErrorController, чтобы можно было легче улучшать страницу 404 в дальнейшем. Также нужно убедиться, что контроллер возвращает код 404!

public class ErrorController : MyController
{
    #region Http404

    public ActionResult Http404(string url)
    {
        Response.StatusCode = (int)HttpStatusCode.NotFound;
        var model = new NotFoundViewModel();
        // Если путь относительный ('NotFound' route), тогда его нужно заменить на запрошенный путь
        model.RequestedUrl = Request.Url.OriginalString.Contains(url) & Request.Url.OriginalString != url ?
            Request.Url.OriginalString : url;
        // Предотвращаем зацикливание при равенстве Referrer и Request
        model.ReferrerUrl = Request.UrlReferrer != null &&
            Request.UrlReferrer.OriginalString != model.RequestedUrl ?
            Request.UrlReferrer.OriginalString : null;

        // TODO: добавить реализацию ILogger

        return View("NotFound", model);
    }
    public class NotFoundViewModel
    {
        public string RequestedUrl { get; set; }
        public string ReferrerUrl { get; set; }
    }

    #endregion
}
Шаг 2: Используем собственный базовый класс для контроллеров, чтобы легче вызывать метод для ошибки 404 и обрабатывать HandleUnknownAction

Ошибка 404 в ASP.NET MVC должна быть обработана в нескольких местах. Первое — это HandleUnknownAction.
Метод InvokeHttp404 является единым местом для перенаправления к ErrorController и нашему вновь созданному действию Http404. Используйте методологию DRY!

public abstract class MyController : Controller
{
    #region Http404 handling

    protected override void HandleUnknownAction(string actionName)
    {
        // Если контроллер - ErrorController, то не нужно снова вызывать исключение
        if (this.GetType() != typeof(ErrorController))
            this.InvokeHttp404(HttpContext);
    }

    public ActionResult InvokeHttp404(HttpContextBase httpContext)
    {
        IController errorController = ObjectFactory.GetInstance<ErrorController>();
        var errorRoute = new RouteData();
        errorRoute.Values.Add("controller", "Error");
        errorRoute.Values.Add("action", "Http404");
        errorRoute.Values.Add("url", httpContext.Request.Url.OriginalString);
        errorController.Execute(new RequestContext(
             httpContext, errorRoute));

        return new EmptyResult();
    }

    #endregion
}
Шаг 3: Используем инъекцию зависимостей в фабрике контроллеров и обрабатываем 404 HttpException

Например, так (не обязательно использовать StructureMap):
Пример для MVC1.0:

public class StructureMapControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(Type controllerType)
    {
        try
        {
            if (controllerType == null)
                return base.GetControllerInstance(controllerType);
        }
        catch (HttpException ex)
        {
            if (ex.GetHttpCode() == (int)HttpStatusCode.NotFound)
            {
                IController errorController = ObjectFactory.GetInstance<ErrorController>();
                ((ErrorController)errorController).InvokeHttp404(RequestContext.HttpContext);

                return errorController;
            }
            else
                throw ex;
        }

        return ObjectFactory.GetInstance(controllerType) as Controller;
    }
}

Пример для MVC2.0:

 protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
    try
    {
        if (controllerType == null)
            return base.GetControllerInstance(requestContext, controllerType);
    }
    catch (HttpException ex)
    {
        if (ex.GetHttpCode() == 404)
        {
            IController errorController = ObjectFactory.GetInstance<ErrorController>();
            ((ErrorController)errorController).InvokeHttp404(requestContext.HttpContext);

            return errorController;
        }
        else
            throw ex;
    }

    return ObjectFactory.GetInstance(controllerType) as Controller;
}

Я думаю, что лучше отлавливать ошибки в месте их возникновения. Поэтому я предпочитаю метод, описанный выше, обработке ошибок в Application_Error.
Это второе место для отлова ошибок 404.

Шаг 4: Добавляем маршрут NotFound в Global.asax для путей, которые не удалось определить нашему приложению

Этот маршрут должен вызывать действие Http404. Обратите внимание, что параметр url будет относительным адресом, потому что движок маршрутизации отсекает часть с доменным именем. Именно поэтому мы добавили все эти условные операторы на первом шаге.

        routes.MapRoute("NotFound", "{*url}", 
            new { controller = "Error", action = "Http404" });

Это третье и последнее место в приложении MVC для отлова ошибок 404, которые Вы не вызываете самостоятельно. Если здесь не удалось сопоставить входящий путь ни какому контроллеру и действию, то MVC передаст обработку этой ошибки дальше платформе ASP.NET (в файл Global.asax). А мы не хотим, чтобы это случилось.

Шаг 5: Наконец, вызываем ошибку 404, когда приложению не удается что-либо найти

Например, когда нашему контроллеру Loan, унаследованному от MyController, передан неправильный параметр ID:

//
// GET: /Detail/ID

public ActionResult Detail(int ID)
{
    Loan loan = this._svc.GetLoans().WithID(ID);
    if (loan == null)
        return this.InvokeHttp404(HttpContext);
    else
        return View(loan);
}

Было бы замечательно, если бы можно было все это реализовать меньшим количеством кода. Но я считаю, что это решение легче поддерживать, тестировать, и в целом оно более удобно.

Библиотека для второго решения

Ну и на последок: уже готова библиотека, позволяющая организовать обработку ошибок описанным выше способом. Найти ее можно здесь — github.com/andrewdavey/NotFoundMvc.

Заключение

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

В своем приложении я использовал обработку ошибки через Web.config с использованием роутинга. До окончания разработки приложения, а останавливаться на обработке ошибки 404 довольно опасно — можно вообще приложение тогда никогда не выпустить. Ближе к окончанию, скорее всего, внедрю второе решение.

Ссылки по теме:

  1. ASP.NET, HTTP 404 и SEO.
  2. CustomErrors does not work when setting redirectMode=«ResponseRewrite».
  3. How can I properly handle 404 in ASP.NET MVC?
  4. Обработка ошибок для всего сайта в ASP.NET MVC 3.
  5. ASP.NET MVC 404 Error Handling.
  6. HandleUnknownAction in ASP.NET MVC – Be Careful.
  7. github.com/andrewdavey/NotFoundMvc.

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

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

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

  • Отсутствует файл favicon.ico, который запрашивается браузером при каждом входе на страницу. Этот файл требуется, чтобы появилось изображение перед URL страницы в адресной строке браузера.
  • Отсутствует файл robots.txt. Он создается для роботов поисковиков, которые запрашивают его, когда выполняются запросы сайта. Это позволяет более грамотно распределять ресурсы поискового робота, указывая ему на страницы какие следует обойти, а какие нет.
  • Отсутствует файл javascript. Если в html-коде присутствует ссылка на данный файл, а сам файл отсутствует, то возникнет ошибка.

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

Этапы обработки ошибки 404

  • Пользователь получает ошибку сервера.
  • Уточняется, какая именно ошибка произошла.
  • В случае 404 ошибки, происходит ее обработка, которая выполняет следующие действия:
  • устанавливает кода ошибки 404.
  • создает документ из шаблона.
  • удаляет код ошибки с сервера.

Также проводится проверка обработки страниц 404.

Очень часто сервером хостинга является Apache, в таком случае, в файл .htaccess следует добавить код:

ErrorDocument 404 /404.html

Где 404.html — это страница, сообщающая об ошибке, а .htaccess – это файл, содержащий правила для работы сервера.

В ситуации, когда сервером является IIS, для устранения ошибки нужно в разделе настроек менеджера Error Pages найти файл web.config и прописать код обработки ошибок:

error statusCode="404" prefixLanguageFilePath="" path="/404.php" responseMode="ExecuteURL" /

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

Отслеживать появление и обработку ошибок 404 вы можете в файле error_log, он покажет вам, каких файлов не хватает на сайте. Это поможет избежать ссылок на такие несуществующие файлы.

Стоит отметить, что описанная выше директива ErrorDocument способна обрабатывать не только 404 ошибку, но и все остальные.

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

Довольно часто встречаются случаи, когда ошибки 404 приобретают характер систематических ошибок:

  • Отсутствие файла favicon.ico. Когда вы открываете любую страницу, браузер запрашивает изображение с именем favicon.ico, которое отображается в адресной строке перед адресом страницы.

  • Отсутствие файла robots.txt. Данный файл запрашивают роботы поисковиков регулярно перед каждым выполнением запросов сайта.

  • Отсутствующий javascript файл, когда на этот файл имеется ссылка в шаблоне HTML-кода сайта.

Способ решения этих проблем достаточно прост – необходимо убедиться, что файлы, которые запрашивает браузер, присутствуют на сервере. Устранение этой проблемы увеличивает скорость загрузки примерно в 4 раза.

Следует обратить внимание, что обработка ошибки 404 htaccess полностью исключена из настройки системы. Поэтому пользователю необходимо обрабатывать её самостоятельно.

Сообщение о 404 ошибка должно помогать читателю сайта с определением дальнейших действий

Этапы обработки ошибки 404 осуществляются в таком виде:

  • Пользователю поступает ошибка сервера;

  • Идет распознание типа ошибки;

  • Если это ошибка 404, ошибка обрабатывается.

Шаги обработки ошибки 404 htaccess:

  • Установка кода ошибки 404;

  • Создание документа из шаблона;

  • Удаление кода ошибки с сервера. 

Решение проблемы также зависит от сервера, установленного на хостинге.

В том случае, если это сервер Apache, нужно вставить в файл .htaccess следующее:

ErrorDocument 404 /404.html

Рассмотрим код детальнее:

  • 404.html – страница, которая сообщает об ошибке;

  • .htaccess — файл, который содержит правила для сервера Apache.

Если же на хостинге установлен сервер IIS, в таком случае устранять ошибку лучше с помощью менеджера. В настройках сайта выбираем следующее:

HTTP Features->Error Pages

После ищем нужный заголовок и редактируем. В файле Web.config обработка ошибок прописывается так:

<error statusCode="404" prefixLanguageFilePath="" path="/404.php" responseMode="ExecuteURL" />

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

Также вы можете наблюдать появление ошибки 404 в файле error_log и прослеживать, какие документы отсутствуют на сервере, чтобы исключить битые ссылки.

После решения проблемы создайте файл 404.html, в котором будет описание того, что делать пользователю при возникшей проблеме. Советы и указания всегда пригодятся вашему пользователю.

Важно, что директива ErrorDocument может обрабатывать не только ошибку 404, но и все остальные ошибки. К примеру, такими способами можно обработать 403 ошибку.

Предложить идею урока:

Неправильная работа редиректа

Редиректом называется команда, которая автоматически перенаправит посетителей на новый адрес ресурса. Наиболее популярным является 301 и 302 редирект.

Если использовать 301 редирект, то поисковые системы (ПС) будут автоматически перенаправлены новую страницу, а старый элемент будет удаляться из индексации. При эксплуатации кода 302 ПС получит данные о временном расположении страниц на другом адресе, и не будет удалять старый сайт из базы индексации.

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

Данный статус ошибки появляется, если посетитель будет указывать в строке браузера несуществующий адрес страницы, либо если к странице ведет битая ссылка.

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

Чтобы исключить такие препятствия на пути к грамотной работе ПС и посетителей, необходимо выполнить следующие действия:

  • настроить сервер таким образом, чтобы код 404 выдавали только страницы, которые не нужны или удалены. А ПС ранжировались страницы, несущие в себе важные информативные данные для посетителей;

  • страница, которая несет в себе 404 ошибку, может быть создана с определенным содержанием и иметь грамотное оформление, которое заставит посетителя найти нужную ему информацию именно на вашем ресурсе. К примеру, можно предложить использование карты сайта или же главную страницу в качестве альтернативы для поиска. Чем больше содержания, оформления и мотивирующих элементов, тем вы будете увереннее, что посетитель останется на ресурсе и будет искать нужную ему информацию. Можно использовать, к примеру, такие варианты для оформления страницы с 404 ошибкой:

    404

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

    404 на одноклассниках

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

Некорректная настройка зеркала

Поисковые алгоритмы воспринимают зеркала как аналогичные ресурсы, расположенные в других доменах. К примеру, многие владельцы сайтов создают аналогичные ресурсы, используя доменные с www и без. Такой способ может быть использован для того, чтобы избежать перегруженности сайта. Чтобы не было дублирования страниц, нужно указывать основное зеркало.

Нужно знать, что поисковые роботы не будут индексировать неосновные зеркала, следовательно, продвигаться они не будут. Если указывать основное зеркало неправильно, то случится склейка, в результате которой ресурс не сможет выйти в ТОП выдачи. Склейкой называются объединения основного и неосновных зеркал, поэтому поисковым системам приходится выделять главное, что они часто просто отказываются делать.

Проверка правильности настройки зеркал

Чтобы проверить насколько корректно настроенными являются зеркала вашего сайта, можно использовать несколько основных способов:

  1. Самым простым вариантом будет проверка через поисковую систему, для этого необходимо ввести url:www. sitе.ru | url:sitе.ru в поисковые строки браузера, заменив sitе.ru на полное название и домен ресурса. Нажимаем кнопку «Искать» и получаем:

    Проверка настройки зеркал

    В данном случае нужно навести курсором на сайт, и посмотреть, сколько вариантов выдачи вы видите и какой из них. Если вы увидели только один вариант, который является вашим основным зеркалом, то с настройкой все в порядке.

  2. Используйте для проверки настройки зеркал специальные сервисы.

  3. «Сообщить о новом сайте» — этот инструмент расположен в Яндекс.Вебмастере, с его помощью можно также узнать о том, насколько корректна настройка зеркала. Для этого нужно в соответствующем поле указать адрес ресурса, ввести капчу, после чего используем кнопку «добавить».

    Сообщить о новом сайте

    Если вы указали зеркало, то система выдаст соответствующее сообщение о том, что данный ресурс — не основное зеркало.

Как указать поисковикам основной ресурс

Чтобы настроить поисковые работы на отображение и индексирование основных зеркал, используются нижеследующие методы:

  • директива Hоst, где нужно указать основное зеркало (находится в файле robоts.txt). Директивой Hоst называют нестандартное расширение от Яндекса, с помощью которого выделяется основное зеркало. Если такой команды нет в robоts.txt, то у поисковой системы будет отсутствовать информация о том, какое из зеркал будет основным, а значит и индексировать ваш сайт поисковая система будет неправильно, сокращая шансы на первые строчки выдачи;

  • установкой 301 редиректа с дополнительных зеркал на главное. В данном случае это должно быть корректное перенаправление с одного сайта на другой;

  • инструменты, представленные в Яндекс.Мастере, в данном случае вам потребуется вкладка «Главное зеркало»:

    Указание основного зеркала

  • Корректировочный отчет сзв тд при ошибке
  • Корректировочная счет фактура исправление собственной ошибки
  • Корректировка реализации исправление собственной ошибки
  • Корректировка поступления исправление собственной ошибки проводки
  • Корректировать текст на ошибки