Ошибка 404. «страница не найдена» (not found). как исправить?

Избавление от статуса 404 ошибки

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

В результате чего появляется сообщение о 404 ошибках?

Сообщение “404 Not Found” появляется на вашем экране по нескольким причинам:

1. страница просто-напросто была перемещена (url страницы поменялся);

2. могут быть незначительные ошибки в написание url страницы;

3. страница была удалена.

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

Причины ошибки

Причины, по которым HTTP возвращает ответ 404 Not Found:

  • Неверный адрес. К примеру, при ручном наборе пользователь допустил опечатку в URL либо ссылка ведёт на несуществующую страницу.
  • Битая ссылка. Это нерабочий URL, который никуда не ведёт. Данный вариант иногда возникает при внутренней перелинковке. К примеру, раньше страница существовала, а потом её удалили и забыли убрать ссылку.
  • Удалённая страница. Когда пользователь попытается перейти на удалённую с сервера страницу, он также увидит ошибку 404. Ссылка для перехода может сохраниться в браузерных закладках или на сторонних ресурсах.
  • Неправильный редирект на страницу с изменённым адресом. Допустим, в процессе редизайна URL изменили, но оставили без внимания связанные ссылки.
  • Неполадки на сервере. Это самый редкий вариант.

В большинстве ситуаций ошибка 404 отображается, когда не удаётся обнаружить нужную страницу на доступном сервере.

Причины отсутствия страницы на сайте бывают разными

Доступные переменные окружения

Перенаправление на другой URL может быть полезным особенно если передаётся некоторая информация, которая может использоваться для более ясного объяснения или журналирования условия ошибки.

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

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

REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/jpeg, image/png
REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8
REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=client.example.com
REDIRECT_SERVER_NAME=www.example.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/2.2.15
REDIRECT_URL=/cgi-bin/buggy.pl

Чтобы посмотреть на эти переменные, вы можете в файл .htaccess добавить строку:

ErrorDocument 404 /er.php

В файл er.php скопируйте:

<?php

print_r($_SERVER);

И вызовите на сервере ошибку 404:

Переменные окружения REDIRECT_ создаются из переменных окружения, которые существовали перед редиректом. Они переименовываются с префиксом REDIRECT_, то есть HTTP_USER_AGENT становится REDIRECT_HTTP_USER_AGENT.

REDIRECT_URL, REDIRECT_STATUS, и REDIRECT_QUERY_STRING гарантировано будут установлены, а другие заголовки будут установлены только если они существовали до условий возникновения ошибки.

Ни одна из них не будут установлены если целью ErrorDocument является внешний редирект (всё что угодно, начинающееся со схем вроде http:, даже если она отсылает на тот же хост что и сервер).

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

Для этого в файл .htaccess нужно добавить строку:

ErrorDocument 404 "You requested <b>%{REQUEST_URI}</b> on the <b>%{HTTP_HOST}</b> host using the <b>%{REQUEST_METHOD}</b> method and the <b>%{REQUEST_SCHEME}</b> scheme, but you got the 404 error.<br>So I collected some information about you: your IP address is <b>%{REMOTE_ADDR}</b>, and your User Agent is <b>%{HTTP_USER_AGENT}</b>."

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

Дополнительно можно использовать специальное значение default, чтобы указать Apache httpd простое жёстко прописанное сообщение. Хотя это не требуется в обычных обстоятельствах, слово default может восстановить то значение, которое используется в Apache httpd по умолчанию для простого жёстко прописанного сообщения, в противном случае, это сообщение будет получено от существующей директивы ErrorDocument.

ErrorDocument 404 /cgi-bin/bad_urls.pl

<Directory "/web/docs">
  ErrorDocument 404 default
</Directory>

Помните, что когда устанавливаете ErrorDocument, который указывает на удалённый URL (любая строка, перед которой стоит протокол http или что-то подобное), то Apache HTTP отправит перенаправление клиенту, говоря ему, где найти этот документ, даже если документ в конечном счёте находится на этом же самом сервере. Это имеет несколько последствий, самым важным из которых является то, что клиент не получит оригинальный код статуса ошибки, но вместо этого получит код статуса редиректа. Это, в свою очередь, может сбить веб роботов и других клиентов, которые на основании кода статуса пытаются определить, является ли URL действительным. Дополнительно, если вы используете удалённый URL в ErrorDocument 401, клиент не будет знать о запросе пароля у пользователя, поскольку он не получит код статуса 401. Следоавтельно, если вы используете директиву ErrorDocument 401, то вы должны отправлять на локальный документ.

Microsoft Internet Explorer (MSIE) по умолчанию игнорирует сообщения об ошибках сгенерированные сервером, когда они «слишком маленькие» и подставляет свои собственные «дружественные» сообщения об ошибках. Порог размер варьирует от типа ошибки, но в общем если вы делаете вашу страницу ошибки больше чем 512 байт, тогда MSIE покажет сгенерированную сервером ошибку не маскируя её.

Что означает ответ 404

Error 404 Not Found отображается по-разному: «HTTP 404 не найден», «Ошибка 404 Not Found», «404 Страница не найдена». Смысл надписи всегда остаётся тем же: страница отсутствует либо просто не работает. Not Found в переводе означает «не найдено».

Ошибка 404 — классический код ответа по протоколу HTTP. Он свидетельствует, что связь с сервером установлена, но информации по заданному запросу нет.

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

Разберёмся в техническом формировании ответа Error 404 Not Found.

Техническая сторона вопроса. При связи по HTTP браузер запрашивает указанный URL и ждёт цифрового ответа. То есть любой запрос пользователя направляется на сервер размещения искомого сайта. Когда браузеру удаётся связаться с сервером, он получает кодированный ответ. Если запрос корректный и страница найдена, отправляется ответ с кодом 200 OK, что соответствует благополучной загрузке. При отсутствии страницы отправляется ответ об ошибке.

Что значит код «404». В ответе 404 первая четвёрка указывает на то, что запрос был чрезмерно длительным или в самом адресе была ошибка. Ноль предполагает синтаксическую неточность. Завершающая цифра кода отображает конкретную причину ошибки — «4» означает отсутствие данной ссылки.

Какие ещё ошибки бывают. Ошибку 404 не нужно путать с другими ответами, которые указывают на невозможность связи с сервером. Например, ошибка 403 сообщает, что доступ к URL ограничен, а ответ «Сервер не найден» свидетельствует, что браузер не смог обнаружить место размещения сайта.

Google на 404 странице сообщает о возможных причинах ошибки

How to Monitor 404 Errors Going Forward

Going forward, it can be beneficial to pay attention to which requests are causing 404 errors at your site. This can help you:

  • Find broken links that are sending people to a non-existent resource (these could be internal links or external links from other sites). You’d then want to do your best to fix those links if at all possible.
  • See which pages Google is having trouble crawling. You’d then want to figure out why Google is trying to crawl a non-existent page and set up a redirect if needed.
  • Troubleshoot performance related issues with 404 errors.

Option 1 – Google Analytics

If you use Google Analytics, you can set up a custom report to track 404 errors from external links. Rebelytics has a good tutorial on the topic.

Option 2 – WordPress Plugin

If you want to use a WordPress plugin, the aforementioned Redirection plugin can help you monitor for 404 errors from your WordPress dashboard.

Option 3 – Third-Party Audit Tool

You can also use a third-party audit tool like Ahrefs to monitor for 404 errors on your WordPress site. You can even set this up to run on a schedule.

404 errors audit

Option 4 – Google Search Console

Lastly, you can track 404 errors that Google’s crawlers encounter in Google Search Console. Once you’ve verified your site with Google Search Console, go to Crawl → Crawl Errors → Not found to view a list of 404 errors that Google has encountered. This is by far one of the easiest ways. It’s also the best in terms of performance because it requires no third-party plugins or additional scanning against your site. Google’s bots are already crawling your site on a regular basis, so why not simply take advantage of the data they already provide?

Google Search Console 404 errors

How to Fix Error 404 Not Found on WordPress

Below, we’ll cover a couple different methods for how to fix the Error 404 Not Found message, depending on whether it’s happening sitewide or to specific content.

Update Your WordPress Site’s Permalinks

If you’re experiencing sitewide 404 errors when trying to access content, the most likely cause is an issue with your permalinks (or your .htaccess file, if your host uses Apache). If you’re a Kinsta client, we utilize Nginx, so you can rule out the .htaccess file as a possible cause.

The easiest way to fix this is to update your permalink settings through the WordPress dashboard. All you need to do is go to Settings → Permalinks and click Save Changes (you don’t need to make any changes – clicking Save Changes is enough).

Regenerate permalinks in WordPress

Set Up 301 Redirects For Moved or Renamed Content

If you’re experiencing 404 errors on a specific piece of content, the issue is likely that you:

  • Changed the URL slug for that content.
  • Moved that piece of content manually, e.g. by deleting the existing post and pasting it into a new post.

Users then try to access the content at the old location and see a 404 page instead of the resource they were expecting. The best way to fix this is to automatically redirect anyone who tries to access the old location to the new location. That way, they’ll make it to the right spot without any 404 errors. It’s also good for SEO. If you move or rename a post without adding a redirect, you lose all the domain authority attached to the backlinks pointed at that post.

WordPress by default will attempt to redirect changed/moved content. But it doesn’t always work and you should never rely on WordPress for this functionality. But don’t worry, there are several easy ways to set up redirects in WordPress:

First, you can use the free Redirection plugin to manage redirects from your WordPress dashboard. Once you’ve installed and activated the plugin, go to Tools → Redirection and enter the 404 page URL in the Source URL box and the new location of the content in the Target URL box:

How to set up redirects with the Redirection plugin

If you’re hosting with Kinsta, you can also manage redirects from the MyKinsta dashboard. Using Kinsta’s tool is actually a better way to go about it as the rules are implemented at the server level, which is a much more optimal way in terms of performance. It also means one less third-party plugin you have to worry about.

Struggling with downtime and WordPress problems? Kinsta is the hosting solution designed to save you time! Check out our features

Go to the site you want to manage. Then, click on the “Redirects” tab. To add a new redirect, click the large “Add Redirect Rule” button:

How to set up redirects from your Kinsta dashboard

Finally, if your host uses the Apache server, you can use .htaccess to set up redirects. The .htaccess Generator site can help you generate the proper code to add to your site’s .htaccess file.

Примеры оформления страниц 404

Designzillas

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

При этом на странице есть ссылки на все основные разделы сайта.

Меню на сайте Designzillas есть и на 404 странице

Domenart Studio

Веб-студия «Домен АРТ» использует красочную страницу 404, оформленную в единой стилистике ресурса. Заблудившимся пользователям предлагают попробовать ещё раз ввести адрес или перейти в нужный раздел.

Контакты, поиск, меню — и всё это на 404 странице Domenart Studio

E-co

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

Ошибка 404 «Эко Пауэр» выглядит как страница входа

Компания «Дом со всем» предлагает заказать обратный звонок

Kualo

На странице Kualo можно просто поиграть и заработать скидки

Рано или поздно с ошибкой 404 сталкивается большинство сайтов. При регулярной проверке можно своевременно исправить неработающие ссылки, чтобы в ответ пользователи получали код 200 OK. Но для крупного ресурса лучше настроить оригинальную страницу, которая будет отображаться при появлении ошибки Not Found и подскажет посетителям, что делать дальше.

Когда можно увидеть ошибку 404

Вот несколько распространенных способов отображения ошибки HTTP 404:

  • Ошибка 404
  • 404 не найдено
  • Error 404
  • Запрошенный URL не был найден на этом сервере
  • HTTP 404
  • Ошибка 404, не найдено
  • 404 – файл или каталог не найден
  • 404, Страница не найдена

Сообщения об ошибках 404 Not Found могут появляться в любом браузере или любой операционной системе. Большинство ошибок 404 Not Found отображаются в окне интернет-браузера так же, как и веб-страницы.

В Internet Explorer сообщение «Веб-страница не найдена» обычно указывает на ошибку HTTP 404, но возможна ошибка 400 Bad Request. Вы можете проверить, на какую ошибку ссылается IE, проверив наличие 404 или 400 в строке заголовка.

404 ошибки, полученные при открытии ссылок через приложения Microsoft Office, приводят к появлению на интернет-сайте сообщения о том, что запрошенный вами элемент не может быть найден (HTTP/1.0 404) в программе MS Office.

Когда Центр обновления Windows выдает ошибку 404, он отображается в виде кода 0x80244019 или в виде сообщения WU_E_PT_HTTP_STATUS_NOT_FOUND.

Как устранить ошибку The requested URL was not found on this server

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

  • Проверьте корректность набранной вами ссылки. Даже один не верно набранный символ может вызывать появление данной ошибки. Внимательно проверьте правильность набранного вами линка, и если всё хорошо, тогда идём дальше,
  • Перегрузите проблемную страницу (поможет стандартное нажатие на клавишу F5),
  • Очистите историю, куки, кэш вашего веб-навигатора. Например, в Хром для этого необходимо нажать на кнопку настроек браузера (три точки вверху слева), в открывшемся окне выбрать «Настройки», и в них найти опцию «Очистить историю»,
  • Подождите некоторое время. Вполне возможно, что на сайте проводятся различные технические работы, и через некоторое время запрашиваемая страница станет доступна в полном объёме, что поможет решить ошибку requested URL not found,
  • Поищите нужную страницу через популярные поисковые системы (Гугл, Яндекс, Бинг и другие). Если вы помните какие-то словосочетания из контента необходимой вам страницы, тогда стоит поискать её через поисковики по указанным словосочетаниям,
  • Используйте альтернативные публичные ДНС-сервера, доступные в сети. К примеру, чтобы настроить ПК на использование подобных серверов от Гугл, необходимо нажать на Win+R, и там набрать ncpa.cpl. В открывшемся перечне сетевых подключений найти ваше интернет-подключения, навести на него курсор, щёлкнуть ПКМ, и выбрать «Свойства». В списке имеющихся сетевых компонентов найти «IP версии 4», дважды кликнуть на нём, и внизу ввести ДНС адреса так, как указано на картинке.

Затем нажмите на «Ок», и перезагрузите ваш PC, это может помочь избавиться от ошибки requested URL not found.

  • Временно отключите ваш антивирус и файервол, дабы убедиться, что они не блокируют вам доступ к нужному ресурсу,
  • Проверьте ваш PC на наличие зловредов (к примеру, с помощью известного «ДокторВеб Кюрейт»),

How to Create Your Own Error 404 Not Found Page

While you can do your best to prevent 404 errors by following the tips above, it’s impossible to entirely eliminate 404 errors because some things are just plain outside your control. It’s not uncommon for small WordPress sites to have thousands of 404 errors every month.

For example, if a visitor mistypes the URL, or if another website links to a page that doesn’t exist, people are going to get 404 errors no matter what.

To provide a more user-friendly error page, you can use one of the many 404 page plugins. For example, the free 404page plugin lets you set up a custom 404 error page with:

  • A search box
  • Important links
  • Contact information

Another important feature of the 404page plugin is that it doesn’t create redirects. A 404 page should never be redirected to a physical page such as . The 404 error should always be generated dynamically on the page in question.

By including these elements, you give visitors the tools they need to find their way to the right page. But remember, keep your 404 page light for better performance. Only include what is absolutely needed.

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

Грамотно оформленная страница с ошибкой Error 404 Not Found — действенный инструмент конвертации посетителей. Ограничений по использованию страницы с ошибкой 404 нет. При этом практически все CMS позволяют настраивать дизайн этой страницы.

Что публиковать на странице 404:

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

При оформлении страницы-ошибки желательно опираться на рекомендации поисковиков:

  • Яндекс настоятельно рекомендует, чтобы страница контрастировала с основным содержанием сайта — иные цвета, другие графические приёмы либо их отсутствие. Необходимо чётко и понятно объяснить пользователю, что запрошенной страницы не существует и предложить другое решение.
  • Google советует придерживаться единого стиля оформления. Но также рекомендует понятно рассказать об ошибке и предложить полезные материалы.

Главное — по возможности отказаться от стандартной страницы 404

Подумайте, как привлечь внимание пользователя. Расскажите ему об отсутствии искомой страницы и предложите взамен что-то полезное или интересное

Возможные исправления ошибок отклоненных URL

  1. Проверьте, не работает ли сайт
  2. Установите UR Browser
  3. Очистить кеш браузера
  4. Перезагрузите маршрутизатор
  5. Добавьте URL-адрес веб-страницы на свои доверенные сайты
  6. Откройте страницу в альтернативном браузере

1. Сайт не работает?

Сначала проверьте, не работает ли сайт. Возможно, веб-сайт вообще не работает. Чтобы проверить, так ли это, откройте в своем браузере сайт Is it Down Right Now.

2. Установите UR Browser.

Если веб-сайт, который вы пытаетесь посетить, работает, возможно, виноват ваш браузер. Предлагаем установить новый браузер.

Например, UR Browser — отличный выбор для пользователей Windows 10.

Если бы мы описали UR Browser тремя словами, это были бы слова: быстрый, надежный и безопасный. В общем, это все, что вам нужно от браузера.

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

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

Загрузить сейчас UR Browser

Сообщите нам, устранило ли это быстрое решение проблему.

3. Очистите кеш браузера.

« Запрошенный URL был отвергнут ошибка » может быть из — за поломки или испорчены, печенье. Некоторые пользователи заявили, что очистка кеша браузера устранила проблему. Пользователи Chrome могут очистить кеш этого браузера следующим образом.

Нажмите кнопку меню Настроить Google Chrome .

Щелкните Дополнительные инструменты > Очистить данные просмотра, чтобы открыть параметры, показанные на снимке экрана ниже.

  • Выберите Все время в раскрывающемся меню Диапазон времени.
  • Выберите опцию Cookies и другие данные сайта .
  • Нажмите кнопку Очистить данные .

Пользователи других браузеров могут очищать свои файлы cookie с помощью бесплатной утилиты CCleaner. Нажмите « Бесплатная загрузка» на веб-сайте CCleaner, чтобы добавить это программное обеспечение в Windows.

Затем пользователи могут щелкнуть Custom Clean> Applications in CCleaner, чтобы открыть вкладку, показанную непосредственно ниже. Установите флажок « Файлы cookie» для своего браузера и нажмите кнопку « Анализировать» . После этого пользователи могут нажать кнопку « Запустить очиститель» .

4. Перезагрузите маршрутизатор.

Некоторые пользователи также подтвердили, что перезапуск маршрутизатора устраняет ошибку « Запрошенный URL-адрес был отклонен ». Итак, выключите маршрутизатор хотя бы на несколько часов, а возможно, даже на день.

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

5. Добавьте URL-адрес веб-страницы на свои надежные веб-сайты.

Добавление URL-адресов на доверенные веб-сайты — это еще одно решение, которое, как подтвердили некоторые пользователи, исправляет ошибку «Запрошенный URL-адрес был отклонен ». Чтобы добавить URL-адрес доверенных сайтов Chrome, введите chrome: // settings / в адресную строку браузера и нажмите Enter.

  • Прокрутите вкладку «Настройки» вниз и нажмите кнопку « Дополнительно» .
  • Щелкните Открыть настройки прокси , чтобы открыть окно, показанное непосредственно ниже.

Выберите Безопасность на снимке ниже.

Выберите  зону « Надежные сайты» и нажмите кнопку « Сайты» .

  • Введите URL-адрес веб-страницы, которая не открывается.
  • Нажмите кнопку Добавить .
  • Нажмите кнопку « Закрыть» в окне «Надежные сайты».
  • Затем щелкните OK в окне свойств Интернета.

6. Откройте страницу в альтернативном браузере.

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

Opera, Edge, Maxthon, Vivaldi и Firefox — это лишь некоторые из браузеров Windows 10, альтернативных Chrome, которые могут открывать веб-страницу.

« Запрошенный URL-адрес был отклонен » — это лишь одно из различных сообщений об ошибках загрузки страницы, которые могут возникать в браузерах.

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

СВЯЗАННЫЕ СТАТЬИ ДЛЯ ПРОВЕРКИ:

  • Исправление: «Ой, Snap! Что-то пошло не так при отображении этой веб-страницы »в Google Chrome
  • Исправление: ошибка «Хм, мы не можем открыть эту страницу» в Microsoft Edge
  • Как исправить ошибку «Сервер не найден» в браузере Firefox

Meaning of Requested url not found on this server?

Server errors happen for a number of reasons including misconfigurations on the website server, a problem with the browser or internet connection. Basically, a server error happens when the server encounters a situation that it just doesn’t know how to deal with. You can think of it as the blue screen version of the web. Some of these errors are not specific enough that you can find a fix right away. The most common server error is the «500 error». It is mostly an error with the site you’re visiting and not on your end. Some misconfigurations in the website’s server might have prevented it from responding properly.

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

Not Found в Apache

Начнём с практического примера самой популярной ошибки Not Found — не найдено (запрошенная страница или документ отсутствуют). Чтобы получить это сообщение, достаточно набрать любой несуществующий адрес на сервере:

Not Found
The requested URL /test.php was not found on this server.

Предположим, мы хотим поменять сообщение «Not Found» на любое другое. Это можно сделать изменив настройки веб-сервера в главном конфигурационном файле, либо с помощью .htaccess (смотрите подробности о его включении и возможностях в статье «Файл .htaccess в Apache»).

В качестве примера добавим в файл .htaccess следующую строку:

ErrorDocument 404 "Something went wrong... Please contact admin, email: <a href=\"[email protected]\">[email protected]</a>"

В результате получим:

Сообщение должно быть заключено в двойные кавычки. Структура директивы следующая:

ErrorDocument КОД "СООБЩЕНИЕ"

Пример настроенного сообщения при запрете доступа:

ErrorDocument 403 "By default, Mutillidae only allows access from localhost (127.*.*.*). Edit the .htaccess file to change this behavior (not recommended on a public network)."

Поскольку сообщение будет отправляться в кодировке iso-8859-1, то его нужно писать латинскими буквами. Это ограничение можно обойти, если, например, в качестве страницы ошибки показывать заготовленный файл. О том, как это сделать, будет рассказано далее, где возможности директивы ErrorDocument будут рассмотрены более детально.

Настройка своих сообщений об ошибках веб сервера

Как уже было сказано, настройка страниц ошибок выполняется с использованием директивы ErrorDocument, которая может использоваться в глобально контексте, контексте виртуального хоста или на уровне директории. Её можно использовать в файле .htaccess, если AllowOverride установлена на FileInfo (или более широкие возможности).

В ответ на возникновение проблемы или ошибки Apache httpd можно настроить выполнять одно из четырёх действий:

  • вывести простое жёстко прописанное сообщение
  • вывести настроенное сообщение
  • внутренне перенаправить на локальный URL путь для обработки проблемы/ошибки
  • перенаправить на внешний URL для обработки проблемы ошибки

По умолчанию используется первый вариант, а для настройки опций со 2 по 4 используется директива ErrorDocument, за который следует код ответа HTTP и затем URL или сообщение. Apache httpd иногда будет предоставлять дополнительную информацию в зависимости от проблемы/ошибки.

Начиная с версии 2.4.13 может использоваться синтаксис выражений внутри директивы для создания динамических строк и URL.

URL могут начинаться со слэша () для локальный веб-путей (относительных DocumentRoot) или быть полным URL, который клиент сможет понять. Альтернативно можно написать сообщение, которое будет показано браузером. Помните, принятие решение, чем является параметр: URL, путём или сообщением, выполняется перед обработкой выражения.

Примеры:

# Показ статичного сообщения об ошибке:
ErrorDocument 500 "Sorry, our script crashed. Oh dear"
ErrorDocument 403 "Sorry, can't allow you access today"
ErrorDocument 403 Forbidden!

# Передача управления динамическому обработчику:
ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 404 /errors/bad_urls.php
ErrorDocument 500 http://example.com/cgi-bin/server-error.cgi

# Показ статичной страницы об ошибке (будет сделан внутренний редирект, то есть
# пользователь увидит другую страницу, но адрес в веб-браузере не поменяется):
ErrorDocument 500 http://error.example.com/server_error.html
ErrorDocument 404 /errors/not_found.html
ErrorDocument 401 /subscription/how_to_subscribe.html
ErrorDocument 401 /subscription_info.html

# Передача управления динамическому обработчику, а также передача переменной
ErrorDocument 403 /errors/forbidden.py?referrer=%{escape:%{HTTP_REFERER}}

Синтаксис директивы ErrorDocument следующий:

ErrorDocument <3-цифровой-код> <действие>

где в качестве <действия> могут быть:

  • Локальный URL для перенаправления (если действие начинается с «»).
  • Внешний URL для перенаправления (если действие является правильным URL).
  • Текст для отображения (если не подходит ничего из вышеперечисленного). Текст должен быть обёрнут в двойные кавычки («) если он состоит из более чем одного слова.

При перенаправлении к локальному URL устанавливаются дополнительные переменные окружения, на основе которых можно более детально настроить ответ. Они не отправляются на внешние URL.

Грамотная организация страницы с 404 ошибкой

Сделайте страницу, которая выдает статус 404 ошибки, вашим преимуществом. Существует 5 основных правил, чтобы создать страницу, выдаваемую сервером вместо сообщения “404 Not Found”:

• дизайн страницы должен соответствовать общей концепции дизайна сайта;

• на странице должны присутствовать извинения о том, что страница не работает;

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

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

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

Что же делают пользователи, когда заходят на несуществующую страницу?

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

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

Приемы борьбы со статусом 404 ошибки

Если вы знаете, что страницу, которую вы будете перемещать на другой url, будут искать пользователи, то не поленитесь сделать редирект на новую страницу. Желательно редирект делать с оповещением о том, что пользователь будет перемещен на новую страницу по истечении нескольких секунд. Простейший способом организовать редирект со страницы со статусом 404 ошибки, это написать следующий фрагмент HTML-кода:

Меган Уитмор
Перевод под редакцией Сергея Стружкова, руководителя отдела ресурсов компании

Настройка ответов об ошибках

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

Если ErrorDocument указывает локальное перенаправление на сценарий CGI, сценарий должен включить в свой вывод поле заголовка «Status:», чтобы обеспечить получение на клиенте код статуса ошибки. Например, сценарий Perl ErrorDocument может включать следующее:

...
print "Content-type: text/html\n";
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
...

Если скрипт предназначен для обработки определённого состояния ошибки, например 404 Not Found, он может вместо этого использовать конкретный код и текст ошибки.

Обратите внимание, что если ответ содержит заголовок Location: (для того, чтобы выполнить перенаправление на стороне клиента), сценарий должен выдать соответствующий заголовок Status: (например, 302 Найдено). В противном случае заголовок Location: может не иметь никакого эффекта.

Заключение

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

Если вы используете mod_proxy, вы можете включить ProxyErrorOverride, чтобы вы могли предоставлять пользовательские сообщения об ошибках от имени ваших серверов Origin. Если вы не включите ProxyErrorOverride, Apache httpd не будет генерировать пользовательские документы об ошибках для проксируемого (передаваемого в качестве посредника) содержимого.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Сервис по настройке
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: