Справочник

Запрет доступа в .htaccess: к сайту, папке, файлам и по IP

В Apache 2.4 доступ закрывают строками Require: строка Require all denied закрывает всё, строка Require ip пускает только нужные адреса. Строки ставят в .htaccess той папки, которую нужно закрыть, — они действуют на неё и на вложенные папки.

≈ 8 мин чтения
Содержание 12

Что сделать прямо сейчас

  1. Перед правкой сохраните копию файла .htaccess к себе на компьютер: если что-то пойдёт не так, её можно будет вернуть.
  2. Выберите, что нужно: закрыть папку, пустить только свой IP или закрыть отдельные файлы.
  3. Добавьте строки в .htaccess нужной папки. Сохраните файл и сразу откройте сайт. Если появилась ошибка 500, уберите добавленные строки — сайт заработает как раньше.
  4. Проверьте, что закрытый адрес отвечает 403 — как проверить.

Закрыть папку целиком

Создайте в папке файл .htaccess — или откройте, если он уже есть, — и добавьте строку:

Require all denied

Все файлы в папке и во вложенных папках будут отвечать 403 Forbidden. Скрипты сайта по-прежнему читают эти файлы с диска: запрет действует только на запросы к сайту по адресу — из браузера, curl и других программ.

На своём VPS сначала разрешите .htaccess — как это сделать.

Пустить только свой IP

Require ip 203.0.113.10

Вместо 203.0.113.10 впишите свой IP-адрес. Остальные посетители получат ответ 403.

Несколько адресов пишут в одной строке через пробел, целую сеть — с маской:

Require ip 203.0.113.10 198.51.100.7
Require ip 198.51.100.0/24

Строк Require может быть несколько — посетителя пустят, если подошла любая из них. Запись /24 охватывает адреса от 198.51.100.0 до 198.51.100.255. Адреса IPv6 пишут так же: Require ip 2001:db8::/64.

Если ваш IP меняется, удобнее пароль на папку. Если сайт открывается у вас по IPv6, в правило нужен и ваш адрес IPv6.

Закрыть доступ отдельным адресам

<RequireAll>
    Require all granted
    Require not ip 198.51.100.0/24
</RequireAll>

Внутри блока RequireAll должны выполниться все строки: пускать всех — и не пускать адреса из сети 198.51.100.0/24. Строка Require not сама по себе никого не пускает, поэтому её пишут в паре со строкой, которая пускает, внутри такого блока. Несколько адресов можно перечислить в одной строке через пробел.

Закрыть отдельные файлы

Один файл по имени:

<Files "notes.txt">
    Require all denied
</Files>

Все файлы с окончаниями .ini, .log и .sql:

<FilesMatch "\.(ini|log|sql)$">
    Require all denied
</FilesMatch>

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

Файлы .htaccess и .htpasswd на VPS с Ubuntu закрыты сразу: такой запрет уже есть в главном файле настроек Apache. На хостинге проверьте это через curl — как проверить. На своём VPS для блоков Files и FilesMatch в .htaccess нужно AllowOverride All — как разрешить.

Отключить список файлов

Если в папке нет индексного файла — index.html или index.php, — Apache на VPS с Ubuntu показывает список всех файлов в ней: так задано для /var/www/ в главном файле настроек. На Timeweb и Спринтхосте в таком случае приходит ответ 403. Отключить список:

Options -Indexes

Минус обязателен. Строка Options без плюса и минуса заменяет весь набор настроек папки: Options Indexes включит список и при этом выключит FollowSymLinks, а без него правила RewriteRule в .htaccess перестанут работать — сайт ответит 403.

Какой файл открывать первым, задаёт строка DirectoryIndex. Apache берёт первый найденный файл, слева направо:

DirectoryIndex index.html index.php

Не пускать ботов по названию

SetEnvIfNoCase User-Agent "BadBot" bad_bot
<RequireAll>
    Require all granted
    Require not env bad_bot
</RequireAll>

Первая строка помечает запросы, в названии программы которых есть BadBot, — без учёта больших и маленьких букв. Блок пускает всех, кроме помеченных. Вместо BadBot впишите название из журнала посещений сайта.

Не закрывайте так wget и curl: по справке Timeweb ими пользуется Cron хостинга — задания «HTTP-запрос» идут через wget. И помните, что бот может назваться как угодно — такой запрет действует только на тех, кто называет себя честно. Тот же запрет можно сделать и правилом mod_rewrite — с флагом F.

Старые строки Order, Deny и Allow

Строки Order, Deny и Allow — способ Apache 2.2. В Apache 2.4 они работают через модуль mod_access_compat, который документация называет устаревшим; Спринтхост тоже называет order устаревшим. Замените их на Require:

БылоСтало
Order deny,allow и Deny from allRequire all denied
Order allow,deny и Allow from allRequire all granted
Order deny,allow, Deny from all и Allow from example.comRequire host example.com

Не смешивайте старые и новые строки в одном месте — документация Apache предупреждает, что так получается неожиданный результат. Заменяйте блок целиком.

Как проверить

В терминале компьютера (как открыть терминал, про curl) запросите закрытый адрес:

curl -I https://example.com/backup/

В первой строке ответа должно стоять число 403. Если пришёл ответ 200, запрет не сработал: проверьте, в той ли папке лежит .htaccess и назван ли файл ровно .htaccess.

Проверьте и сам .htaccess:

curl -I https://example.com/.htaccess

Ответ 403 или 404 — всё в порядке. Ответ 200 значит, что файл открыт всем: закройте его блоком Files, как выше.

Правило с IP проверьте так: на время впишите в строку Require ip чужой адрес, например 203.0.113.10, и откройте сайт — должен прийти ответ 403. Затем верните свой адрес.

Ошибки и как их исправить

Что видитеЧто делать
ошибка 500 после сохраненияопечатка или не закрыт блок: у <RequireAll> нужна строка </RequireAll> — разбор
ответ 403 приходит и вамваш IP другой или сменился, или вы заходите по IPv6 — добавьте свой адрес в строку Require ip
ответ 200 вместо 403файл не в той папке или назван не .htaccess; на VPS разрешите .htaccess — как
в папке без индексного файла виден список файловотключите список
после строки Options Indexes сайт с правилами RewriteRule отвечает 403пишите Options со знаком: Options +Indexes или Options -Indexes
403 на всём сайтезапрет попал в .htaccess корневой папки — разбор 403

Источники

Сверено 14 октября 2026 года.

Что почитать дальше