Разбираемся, в каких ситуациях возникает ошибка 403 Forbidden и что делать, чтобы её исправить, когда вы владелец сайта и когда посетитель.

Что внутри

  1. Что такое ошибка 403 Forbidden
  2. Как может выглядеть ошибка 403 Forbidden
  3. Почему возникает ошибка 403 Forbidden
  4. Как убрать ошибку 403 Forbidden

Что такое ошибка 403 Forbidden

Ошибка 403 Forbidden — это код состояния HTTP, один из стандартных ответов сервера на запрос браузера. Примеры других кодов: 404 Not Found, 500 Internal Server Error или 504 Gateway Timeout.

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

Конкретно код HTTP — 403 Forbidden — означает, что у посетителя недостаточно прав для просмотра контента.

HTTP 403 Forbidden: что это — пример
Стандартная страница с кодом ошибки 403 для сайтов, которые работают на Nginx

Как может выглядеть ошибка 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 конфигурационные файлы, в которых обычно прописывают виртуальные хосты, хранятся в таких местах:

  1. Основной конфигурационный файл httpd.conf в каталоге /etc/httpd/conf/ либо apache.conf в каталоге /etc/apache2/conf/ (в зависимости от дистрибутива).
  2. Дополнительные конфигурационные файлы в каталогах /etc/httpd/conf.d/, /etc/apache2/conf.d/, /etc/apache2/sites-available/ или /etc/apache2/sites-enabled/.

У веб-сервера Nginx конфигурационные файлы, в которых обычно прописывают виртуальные хосты, хранятся в таких местах:

  1. Основной конфигурационный файл nginx.conf в каталоге /etc/nginx/.
  2. Дополнительные конфигурационные файлы в каталогах /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 для этого найдите на главной странице панели блок «Файлы» и перейдите в раздел «Менеджер файлов».

Ошибка 403 из-за плагина на сайте с WordPress — отключаем плагины в менеджере файлов.

Дальше найдите корневую папку сайта, перейдите в папку wp-content и переименуйте папку plugins, например, в plugins-old. Это отключит все плагины.

Обычно для основного домена корневая папка называется public_html, а для дополнительного — так же, как и сам домен.

Ошибка 403 на сайте с WordPress — переименовываем папку с плагинами в менеджере файлов cPanel.

Если после этого 403 ошибка исчезла, переименуйте папку plugins обратно, зайдите в неё и по очереди переименовывайте папку с каждым плагином, пока не найдёте тот, который вызывает ошибку.

7. Почистите cookies

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

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

Как очистить куки в популярных браузерах:

8. Почистите кэш

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

Как очистить кэш в популярных браузерах:

Что дальше

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