пятница, 30 декабря 2016 г.

Как исправить ошибку 403 Forbidden?


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

Причины, по которым может возникать 403-я ошибка доступа:

Во всех случаях данная ошибка говорит о запрете на просмотр страницы. Как правило, данный запрет устанавливают сами администраторы на отдельные разделы сайта. Системные же файлы, к примеру, с расширением .php, по умолчанию недоступны из веба.
  • Пользователь заходит в раздел сайта, который для него не предназначен. К примеру, открывает ссылку на закрытый раздел форума, на просмотр которого не имеет делегированных администрацией прав.
  • Пользователь пытается открыть или загрузить файл, доступ к которому закрыт самим сервером. К примеру, это могут быть файлы конфигурации с паролями от базы данных.
  • Пользователь был заблокирован по IP-адресу. Обычно после такой блокировки ограничивается доступ к всему сайту, а выдают её за разного рода деструктивные действия: попытки взломать что-либо, флуд или спам, участие в DDoS-атаке на сайт.
Иногда доступ к сайту закрывают на время проведения технических работ, чтобы посетитель «не увидел лишнего» и не навредил своим вмешательством в налаживающийся сайт. Если же ошибка 403 возникает у пользователей не по описанным причинам, значит, администратор сервера неверно настроил права доступа к страницам.

Решение проблемы:

Неправильный index
Довольно часто причиной появления ошибки 403 становится некорректный файл index. Он отвечает за отображение главной страницы в директории. К примеру, заходя по URL типа site.com/sub браузер выводит содержимое файла site.com/sub/index.html – при этом важно, чтобы его расширение соответствовало одному из допустимых. В противном случае браузер не получает никакой информации и выводит ошибку о запрете доступа – это правильное поведение.
Допустимыми расширениями считаются: .html, .htm, .shtml, .phtml и .php – последний встречается чаще других и в некотором смысле универсален, если сам index содержит валидный код.
Если по каким-то причинам указать для файла index одно из перечисленных расширений невозможно, в файле .htaccess есть возможность добавления своего index с любым расширением или без него. Иногда это делается в целях защиты от DDoS-атак.
Неправильные права доступа
Еще одна распространенная причина – неправильные права у папки, в которую пользователь пытается получить доступ. К примеру, если установить запрет на просмотр папки …/forum, то из интернета нельзя будет попасть на site.com/forum. Это касается не только доступа из веба. Закрытую папку не сможет прочитать и сам веб-сервер, что непременно вызовет ошибку с кодом 500.
Чтобы избежать ошибок, следует составить список папок, к которым можно разрешить доступ, и тех, к которым нельзя. К последним относятся в основном конфигурационные файлы. Изменить права доступа можно с помощью любого FTP-менеджера, обычно все они поддерживают данную функцию, а если есть прямой доступ к серверу, проще и быстрее сделать это через консольную команду CHMOD. Обычно универсальным решением является установка прав 755 на папки и 644 на файлы.
Если поставить права chmod 755 на все директории, а также 644 - для файлов, ошибка 403 не должна возникать.
Если у вас есть доступ к серверу, то можете воспользоваться командами ниже для изменения прав:
find "путь-к-директории" -type d -exec chmod 755 {} \;

find "путь-к-директории" -type f -exec chmod 644 {} \;
Первая команда изменит chmod всех директории на 755, а вторая - все файлов на 644.

Неправильно указана директива index

Вряд-ли ваш сайт статичный, поэтому для, например, PHP директива должна выглядеть примерно таким образом:
index index.html index.htm index.php;
С такой настройкой Nginx сперва попытается найти файл index.html, затем index.htm, а потом только index.php. Если вы не упомянете в директиве index.php, то серверу придется возвратить ошибку 403.

При установке прав на файл вам не требуется ничего знать. В корневой папке сайта список файлов и директорий представлен в виде в таблицы. В ячейке возле файла кликните по крохотной черточке или букве, и она изменит значение. Если же панель управления требует от вас цифры, то смело пишите 755. Это универсальная директива, подходящая к большинству случаев.
Запрет доступа в .htaccess
Запретить доступ к каталогу или файлу можно не только через права на сервере, но и в файле .htaccess.
Изменять что-либо и снимать запреты доступа в .htaccess не рекомендуется, изначально в нем прописаны запреты для безопасности сервера. Если же ситуация не подразумевает другого выхода, можно добавить в файл следующую строчку: “Options +Indexes”.
Неправильный путь к странице
Ошибка возникает и в том случае, если путь к запрашиваемой странице не верен – пользователь пытается получить доступ к файлу, который находится не в той папке. Такое часто случается из-за невнимательности веб-мастера, который ошибся в пути к файлам.
Проверьте, корректны ли пути к недоступным файлам, нет ли в них опечатки. Сверьте путь и фактическое расположение файла на сервере, а также убедитесь, что сам сайт находится в нужной папке. У разных хостинг-провайдеров папка для загрузки сайта может отличаться, обычно это public_html, но возможны другие варианты. Обязательно уточните в службе поддержки хостинга, куда конкретно нужно заливать файлы сайта. Это сбережет уйму времени.
Обновление DNS-кэша
Ошибка 403 часто возникает после переноса сайта на другой хостинг или перемещении его файлов внутри старого сервера, но на другую выделенную хостером зону. В таких случаях ошибка 403 может быть обусловлена тем, что кэш DNS просто не успел обновиться.
В этой ситуации приходится только ждать. Обычно обновление DNS проходит не более чем за сутки, иногда все происходит всего за несколько часов.