404, Bad Gateway или О чём говорят популярные ошибки на сайтах
Наверняка вы сталкивались с ситуацией, когда при попытке зайти на сайт вместо нужной страницы он выдавал то ошибку 404, то 503, то 500, то 403. Что же означают все эти магические цифры, и что делать владельцу сайта, если пользователи сталкиваются с ними? Раскрываем все тайны в этом материале.
Немного о кодах состояния HTTP
Для начала немного базовой теории. Когда вы пытаетесь зайти на веб-сайт, ваш браузер отправляет HTTP-запрос на сервер, где находится этот сайт. Каждый HTTP-запрос, принятый сервером, получает код состояния HTTP — трёхзначное число. Но число не простое, а особенное — оно принадлежит одному из пяти классов состояний:
- 1**: информационные;
- 2**: успешные;
- 3**: перенаправления;
- 4**: ошибки на стороне клиента;
- 5**: ошибки на стороне сервера.
В этом материале мы остановимся на классах ошибок 4**, 5** и расскажем, как их решить, если ваш сайт размещён на виртуальном хостинге.
Коды состояния HTTP, принадлежащие классу 4**, говорят о том, что неполадки произошли на стороне посетителя сайта (например из-за проблем с браузером или опечаток в ссылках). Тем не менее, всегда полезно знать, на какую ошибку наткнулся пользователь — возможно, проблема на самом деле кроется в сайте. А коды класса 5** возвращаются веб-сервером, когда он столкнулся с ошибкой и, вероятно, не может обработать запрос клиента.
Посмотрим, что же может сделать администратор сайта, чтобы решить распространённые ошибки при доступе к веб-ресурсу.
Ошибки клиента
400: Bad Request
Код «Неверный запрос» означает, что в HTTP-запросе содержится синтаксическая ошибка. Несколько примеров, когда такое может произойти и какие действия стоит предпринять:
- У пользователя повреждены файлы cookie — посоветуйте почистить кэш и файлы cookie.
- Внутренняя ошибка браузера — можно попробовать обновить или переустановить браузер.
- Опечатка при вводе запроса вручную (например в консольных командах wget или curl).
401: Unauthorized
Код «Не авторизованный» возникает в случае проблем с аутентификацией или авторизацией на сайте. Например, посетитель пытается посмотреть свой профиль в интернет-магазине, но не ввёл логин и пароль или указал их с ошибкой. В этом случае код ответа 401 будет отправляться до тех пор, пока он не предоставит правильные учётные данные.
Если же ошибка не исчезает, администратору сайта стоит проверить, не повреждён ли файл .htpasswd с данными для входа пользователей.
403: Forbidden
Ошибка подключения к сайту «Запрещено» говорит о том, что у посетителя нет доступа к запрашиваемому ресурсу, файлу или странице. Такая ситуация обычно возникает по разным причинам:
- Нет прав на открытие файла. Убедитесь, что у пользователя есть права на чтение файла (команда chmod вам в помощь).
- Запрет доступа в .htaccess. Возможно, вы ограничили доступ к сайту каким-либо IP-адресам в файле .htaccess.
- Нет индексного файла в запрашиваемой директории. Попробуйте создать индексный файл или включить листинг директорий в конфигурации веб-сервера.
404: Not Found
Пожалуй, самая известная ошибка, с которой сталкивались почти все пользователи Интернета. Она означает, что сервер не может найти запрашиваемый ресурс, или, проще говоря, — «такой страницы не существует».
Если вы уверены, что ошибка 404 на сайте возникать не должна, проверьте ссылку на наличие опечаток и удостоверьтесь, что файл страницы не перемещён и не удалён. Также проблема может быть в отсутствии доступа пользователя к папке, где находится файл — чтобы включить его, нужно добавить разрешение на чтение и выполнение для каталога.
Ошибки сервера
500: Internal Server Error
«Внутренняя ошибка сервера» часто появляется, когда сбой нельзя отнести ни к одной другой известной ошибке класса 5**. Код ошибки 500 сайта означает, что проблема, скорее всего, кроется в настройках сервера.
Наиболее распространенные причины неполадок:
1. Допущена ошибка в файле .htaccess. Попробуйте переименовать его и проверить, работает ли сайт.
2. Отсутствие необходимых пакетов, некорректно выбрана версия PHP. Возможно, следует поменять версию PHP или установить необходимые модули.
3. Ошибка в коде сайта. Если раньше всё работало, восстановите сайт из резервной копии.
502: Bad Gateway
Если ошибка 502 при открытии сайта возникает регулярно, то стоит обратиться в службу техподдержки хостинг-провайдера. При этом подробно опишите действия, которые приводят к возникновению проблемы и укажите, во сколько она обнаружена (если вы обращаетесь в техподдержку REG.RU, то указывайте московское время).
503: Service Unavailable
Код «Сервис недоступен» на виртуальном хостинге означает, что превышен лимит на количество HTTP-запросов (со всеми лимитами можно ознакомиться в технических характеристиках хостинга). Ошибка может возникнуть, например, если при формировании страницы ваш код делает очень много обращений к изображениям, стилям и другим файлам. Возможные решения — либо оптимизировать код и уменьшить число HTTP-запросов, либо перейти на более производительный тариф хостинга.
504: Gateway Timeout
Ошибку можно расшифровать как «время ожидания ответа сервера истекло». Она возникает, когда веб-сервер не может получает ответ от сайта за установленный отрезок времени (по умолчанию 300 секунд).
Обычно так происходит, когда скрипты сайта выполняются слишком долго (например выгрузка базы данных). В этом случае можно обратиться к сайту, минуя веб-сервер, через порт 8081 (для сайтов, работающих на панели управления ISPmanager) или 8080 (для cPanel и Plesk). Если же вы хотите вручную настроить интервалы для ожидания ответа сайта, это можно сделать только на VPS, где доступны более гибкие настройки сервера.
⌘⌘⌘
Теперь вы знаете, какие бывают ошибки на стороне клиента и сервера, где искать неполадки и как устранять их. На самом деле кодов состояния HTTP гораздо больше, и мы перечислили лишь самые основные.
Также не забывайте, что если у вас не получается исправить какую-либо проблему с сайтом, вы можете поискать решение в нашей Базе знаний или обратиться в техподдержку — мы всегда готовы помочь.
Если вы знаете другие возможные решения ошибок, которые мы упомянули в статье, — смело пишите о них в комментариях.