Разбираемся, в каких ситуациях возникает ошибка 403 Forbidden и что делать, чтобы её исправить, когда вы владелец сайта и когда посетитель.
Что внутри
- Что такое ошибка 403 Forbidden
- Как может выглядеть ошибка 403 Forbidden
- Почему возникает ошибка 403 Forbidden
- Как убрать ошибку 403 Forbidden
Что такое ошибка 403 Forbidden
Ошибка 403 Forbidden — это код состояния HTTP, один из стандартных ответов сервера на запрос браузера. Примеры других кодов: 404 Not Found, 500 Internal Server Error или 504 Gateway Timeout.
Сервер отправляет один из таких кодов каждый раз, когда вы вводите в браузере адрес сайта или переходите по ссылке. Код есть, даже когда никакой ошибки нет и страница нормально загрузилась.
Конкретно код HTTP — 403 Forbidden — означает, что у посетителя недостаточно прав для просмотра контента.
Как может выглядеть ошибка 403 Forbidden
Дизайн и текст стандартной страницы с ошибкой будет отличаться в зависимости от веб-сервера или фреймворка, на котором работает сайт. Также стандартную страницу с ошибкой можно оформить в общем дизайне сайта и написать на ней любой текст, не обязательно «403», «Forbidden», «403 Forbidden» или «Ошибка 403».
Вот текстовые варианты этой ошибки, которые вы можете встретить на разных сайтах:
- Forbidden
- 403. That’s an error.
- Error: Access Denied
- 403 Forbidden – nginx
- 403 Sorry! Access denied
- Access forbidden! Error 403
- HTTP Error 403 – Forbidden
- Ошибка 403. Доступ запрещен.
- 403 – Forbidden: Access is denied
- HTTP Status 403 – Access is denied
- Forbidden – You don’t have permission to access this resource
- Forbidden – You don’t have permission to access / on this server
- 403 Forbidden – Access to this resource on the server is denied!
- Sorry, you have been blocked — You are unable to access domen.com
- Access to www.domen.com was denied – You don’t have authorization to view this page – HTTP ERROR 403
Почему возникает ошибка 403 Forbidden
Как мы уже выяснили, 403 ошибка означает, что доступ к контенту запрещён. Это часто случается по таким причинам:
- установлены неправильные права доступа к папкам и файлам;
- установлен неправильный пользователь/группа для файлов и папок;
- доступ запрещён в конфигурационном файле веб-сервера;
- файлы сайта загружены не в корневую папку на хостинге;
- неверно указано имя индексного файла в настройках;
- ошибку вызывает плагин или расширение.
Как исправить ошибку 403 Forbidden
Возможно, так и задумано, чтобы вы видели 403 ошибку. Допустим, администратор сайта осознанно ограничил к нему доступ. В этом случае можно попытаться зайти на сайт через VPN или прокси, но это поможет, только если доступ заблокирован конкретно для вашего IP-адреса.
Часто бывает наоборот — доступ закрывают для всех IP-адресов и разрешают только с определённых, например, с офисного VPN или домашнего выделенного IP. Это простой и рабочий способ защитить панель управления сайтом от взлома.
Если вы точно уверены, что ошибки быть не должно, значит скорее всего что-то сломалось на хостинге, где хранится сайт. Понадобится доступ к нему, чтобы решить проблему. Вот что на нём можно будет проверить.
1. Проверьте права доступа к папкам и файлам
У каждой папки и файла на хостинге есть права — параметр, который определяет, кто и что может с ними делать. Их всего три:
- Чтение — можно просматривать содержимое файла или папки;
- Редактирование — можно вносить изменения в файл, создавать или удалять файлы в папке;
- Выполнение — можно запускать скрипты или выполнять команды в тех или иных папках.
Обладать правами могут три категории пользователей:
- Владелец — обычно пользователь, который создал файл, но вообще, владельцем можно назначить и другого пользователя;
- Группа — пользователи, которые входят в список доверенных для владельца файла или папки и могут обладать особыми правами;
- Мир — все остальные пользователи, например, посетители сайта.
Права обозначаются в виде трёхзначного числа, каждая цифра в котором означает права определённой категории пользователей. Вот стандартные права, с которыми всё должно работать:
- Папки — 755 или 750;
- Файлы — 644 или 640.
Исключение — файл wp-config.php на сайтах на WordPress. Его права должны быть либо 440, либо 400.
Чтобы подробнее изучить, как работают права, читайте нашу статью:
Права доступа к папкам и файлам на хостинге
2. Проверьте владельца папок
Ещё одна популярная причина возникновения 403 ошибки — неправильный владелец файлов или папок. Права на хостинге могут быть правильными, но файлом или папкой может владеть другой пользователь, в группу доверенных пользователей которого не входит веб-сервер. Из-за этого на веб-сервер будут распространяться права остальных пользователей, а их может быть недостаточно.
С такой проблемой могут столкнуться пользователи VPS, на виртуальном хостинге она не возникает. Решением будет — назначить владельцем файлов и папок веб-сервер. Для этого нужно подключиться к серверу по SSH в командной строке и использовать такую команду:
chown пользователь:группа /путь/к/файлу
В качестве пользователя и группы нужно указать имя пользователя, под которым веб-сервер выполняет процессы. Это может быть apache или httpd. Зависит от дистрибутива.
3. Проверьте файл .htaccess
.htaccess — это файл с командами для веб-сервера Apache, которые он должен выполнять каждый раз при обработке запроса ко всем или каким-то отдельным страницам сайта.
С его помощью можно настроить редирект, изменить лимиты веб-сервера и даже запретить доступ к определённым страницам сайта на основе разных параметров.
403 ошибка может возникнуть из-за ошибки при составлении команды, конфликта нескольких команд и даже нескольких файлов .htaccess. Также причиной ошибки могут быть специальные запрещающие команды со словами «Deny from …», «Require IP …», «R=403» или «RedirectMatch 403».
Если вы недавно меняли что-то в .htaccess, скорее всего, быстро найдёте команду, которая вызывает ошибку. А если нет, команда могла появиться там после установки плагина. Или она была в нём раньше, но вы впервые выполнили запрос, для которого команда сработала.
Простой способ узнать, дело в .htaccess или нет, — переименовать этот файл, из-за чего команды в нём перестанут действовать. Если 403 ошибка после этого исчезнет, проблема в какой-то из директив. Дальше придётся вручную выяснять, с какой.
4. Проверьте индексный файл в корневой папке сайта
Индексный файл есть у каждой страницы. Он загружается, каждый раз когда кто-то заходит на страницу в браузере. Его имя прописывается в конфигурационном файле веб-сервера.
Если в папке со страницей, на которую пытаются зайти, не будет индексного файла с указанным в настройках именем, веб-сервер попытается отобразить содержимое папки, где находятся файлы этой страницы. Это часто запрещено в настройках веб-сервера по умолчанию, поэтому в таких ситуациях ошибка 403 — это норма.
Проверьте, чтобы в конфигурационном файле веб-сервера было указано правильное название индексного файла. Допустим, у вас там только index.html, а на самом деле файл называется index.php. Тогда просто добавьте нужное расширение в директиву.
На веб-сервере Apache конфигурационные файлы, в которых обычно прописывают виртуальные хосты, хранятся в таких местах:
- Основной конфигурационный файл httpd.conf в каталоге /etc/httpd/conf/ либо apache.conf в каталоге /etc/apache2/conf/ (в зависимости от дистрибутива).
- Дополнительные конфигурационные файлы в каталогах /etc/httpd/conf.d/, /etc/apache2/conf.d/, /etc/apache2/sites-available/ или /etc/apache2/sites-enabled/.
У веб-сервера Nginx конфигурационные файлы, в которых обычно прописывают виртуальные хосты, хранятся в таких местах:
- Основной конфигурационный файл nginx.conf в каталоге /etc/nginx/.
- Дополнительные конфигурационные файлы в каталогах /etc/nginx/conf.d/, /etc/nginx/sites-available/ или /etc/nginx/sites-enabled/.
Конфигурационные файлы могут храниться и в других папках, если вы управляете сервером при помощи какой-то панели управления. Например, для Webuzo это /usr/local/apps/apache, а для Plesk — /home/user/conf/.
5. Проверьте настройки ModSecurity
ModSecurity — это файрвол, который защищает ваш сайт от внешних угроз. Принцип его работы заключается в том, что он блокирует запросы с кодом HTTP 403 Forbidden, если считает их вредоносными.
Бывает, файрвол срабатывает, когда не должен. Например, посетитель делает на сайте что-то безобидное, — например, заполняет форму, — нажимает «Отправить», но ModSecurity распознаёт это как SQL-инъекцию, блокирует действие и показывает 403 ошибку.
Решением проблемы будет отключить правило, но это получится сделать только на VPS или выделенном сервере. На виртуальном хостинге файрвол настраивает провайдер и у обычных пользователей к нему нет доступа. В этом случае напишите в поддержку провайдера и попросите отключить конкретное правило для вашего сайта.
Узнать, что дело именно в файрволе можно по логам. На VPS или выделенном сервере их можно найти по умолчанию по таким путям:
- Для Apache — /usr/local/apache/logs/modsec_audit.log;
- Для Nginx — /var/log/modsec_audit.log.
На виртуальном хостинге эти логи будут недоступны. В этом случае свяжитесь с провайдером хостинга, объясните им ситуацию и попросите проверить логи.
6. Отключите плагины
Если предыдущие советы не помогли и у вас сайт на CMS, попробуйте проверить плагины. В разных CMS они могут называться модули, дополнения или расширения. Любой плагин это чей-то код, который вы добавляете себе на сайт. В коде может быть баг, который вызовет ошибку. Или несколько плагинов могут конфликтовать между собой.
Простой способ проверить, вызывает ли 403 ошибку плагин — временно отключить все плагины на сайте. Это можно сделать в менеджере файлов в панели управления хостингом.
В cPanel для этого найдите на главной странице панели блок «Файлы» и перейдите в раздел «Менеджер файлов».
Дальше найдите корневую папку сайта, перейдите в папку wp-content и переименуйте папку plugins, например, в plugins-old. Это отключит все плагины.
Обычно для основного домена корневая папка называется public_html, а для дополнительного — так же, как и сам домен.
Если после этого 403 ошибка исчезла, переименуйте папку plugins обратно, зайдите в неё и по очереди переименовывайте папку с каждым плагином, пока не найдёте тот, который вызывает ошибку.
7. Почистите cookies
Ошибка 403 указывает на проблему с правами доступа к контенту, а некоторые cookies как раз используются для повторной авторизации на сайте. Например, благодаря cookies, браузеры запоминают, что мы уже вошли в аккаунт на некоторых сайтах.
Возможно, 403 ошибка возникает, потому что на сервере что-то поменялось и он больше не принимает старые cookies. Как вариант попробуйте зайти на сайт в другом браузере. Если получилось, значит дело точно в браузере.
Как очистить куки в популярных браузерах:
8. Почистите кэш
Возможно, какой-то из предыдущих советов помог, но вы не видите изменений, потому что страница с ошибкой попала в кэш. Как правило такие страницы не кэшируются, но на разных сайтах настройки разные, поэтому на всякий случай лучше очистить кэш.
Как очистить кэш в популярных браузерах:
Что дальше
Если ни одно из решений в статье не помогло, опишите вашу ситуацию в комментариях — постараемся помочь. А если вы разместили свой сайт у нас на хостинге, напишите тикет в службу поддержки, чтобы наши специалисты взглянули в настройки и подсказали, в чём дело.