Справочник

Файл .htaccess: что это и как с ним работать

Файл .htaccess — настройки веб-сервера Apache для одной папки сайта. В нём включают переадресацию на HTTPS, закрывают папки паролем, задают свою страницу 404 и кэширование. Правка действует сразу после сохранения, а ошибка в файле даёт ошибку 500.

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

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

  1. Откройте файловый менеджер в панели хостинга и перейдите в папку сайта — ту, где лежит index.php или index.html.
  2. Найдите в ней файл .htaccess. Если его не видно, включите показ скрытых файлов — как это сделать.
  3. Если файла нет, создайте его — как создать файл.
  4. Перед правкой сохраните копию файла .htaccess к себе на компьютер: если что-то пойдёт не так, её можно будет вернуть.
  5. Добавьте нужные строки — готовые правила по задачам собраны в таблице. Сохраните файл и сразу откройте сайт. Если появилась ошибка 500, уберите добавленные строки — сайт заработает как раньше.
  6. Если сайт не открывается и после этого, разберитесь по шагам — что делать при ошибке 500.

Если у вас свой VPS с nginx без Apache, файл .htaccess ничего не сделает — как перенести правила в nginx.

Что такое .htaccess

Файл .htaccess (с точкой в начале имени) — настройки Apache для одной папки. Они действуют на папку, где лежит файл, и на все вложенные папки. Если во вложенной папке есть свой .htaccess, его строки применяются после строк из папки выше и могут их заменить.

Apache читает .htaccess при каждом запросе, поэтому перезапускать ничего не нужно: правка действует со следующего открытия страницы. Хостинги Timeweb, Beget, Рег.ру и Спринтхост описывают .htaccess в своей справке — у них правила в этом файле работают.

nginx файл .htaccess не читает. А если у вас свой сервер с Apache, документация Apache советует писать настройки в файл сайта: .htaccess нужен там, где доступа к настройкам сервера нет.

Где лежит файл

Главный .htaccess лежит в корневой папке сайта — там же, где index.php или index.html. Его правила действуют на весь сайт. Файл в подпапке действует только на неё и её вложенные папки.

Где сайтКорневая папка
Timewebpublic_html в папке сайта: по справке Timeweb, .htaccess для всего сайта кладут туда
Begetpublic_html в папке сайта
другой хостингпапка, где лежит index.php или index.html; если не нашли — спросите поддержку
свой VPS с Apacheпапка из строки DocumentRoot в настройках сайта, например /var/www/example.com

На VPS папку сайта покажет команда grep -Rn DocumentRoot /etc/apache2/sites-enabled/.

Как увидеть скрытый файл

Имя .htaccess начинается с точки, а такие файлы в Linux считаются скрытыми: файловый менеджер панели или программа для FTP могут их не показывать. Ищите в настройках менеджера пункт про скрытые файлы. В панели cPanel, по справке Рег.ру, путь такой: «Файлы» → «Менеджер файлов» → «Настройки» → «Показать скрытые файлы (dotfiles)».

На сервере скрытые файлы покажет команда ls -a в папке сайта — подробнее про ls.

Как создать файл

  1. В файловом менеджере панели нажмите кнопку создания файла. У Timeweb: «Файловый менеджер» → «Создать файл».
  2. Введите имя .htaccess — с точкой в начале, без пробелов и без окончания .txt. У Timeweb после ввода имени нажмите «Создать».
  3. Откройте файл двойным щелчком, впишите строки и сохраните. У Timeweb — кнопка «Сохранить».

Файл можно подготовить и на компьютере, а потом загрузить в папку сайта по FTP. Сохраните его в кодировке UTF-8 и после загрузки проверьте имя — ровно .htaccess. Timeweb предупреждает: Блокнот Windows может добавить в начало файла невидимую метку BOM, и веб-сервер может прочитать файл неправильно. Поэтому Timeweb советует править файл в файловом менеджере панели или в редакторе Notepad++.

Как устроены строки

Пример файла с двумя правилами:

# Страница переехала на новый адрес
Redirect 301 /old-page/ https://example.com/new-page/

# Своя страница для ошибки 404
ErrorDocument 404 /404.html
  • Одна настройка — одна строка. Первое слово — имя директивы, дальше через пробел её значения.
  • Строка, которая начинается с #, — комментарий: Apache её пропускает. Комментарий пишут отдельной строкой.
  • Имена директив можно писать в любом регистре, а в значениях регистр может иметь значение: Redirect различает /Old/ и /old/.
  • Правила RewriteRule выполняются сверху вниз. Переадресацию на HTTPS ставят в самое начало файла — так советуют Beget и Спринтхост.
  • Строки внутри блока <IfModule …> действуют, только если нужный модуль Apache включён. Если модуля нет, Apache пропускает блок без ошибки.

Если после правки сайт выдаёт ошибку 500

Ошибка в .htaccess — опечатка в имени директивы, лишний символ или директива, которую хостинг запрещает, — даёт ошибку 500 на всех страницах папки.

  1. Верните сохранённую копию файла или уберите последние добавленные строки — сайт заработает.
  2. Добавляйте строки по одной и после каждой открывайте сайт: так видно, какая из них ломает сайт.
  3. Посмотрите журнал ошибок: на хостинге — в панели, на своём VPS — командой sudo tail -n 50 /var/log/apache2/error.log. В записи будет путь к файлу .htaccess и причина.

Что значат сообщения в журнале — Почему .htaccess не работает. Другие причины ошибки 500 — разбор ошибки.

.htaccess на своём VPS

В Ubuntu Apache по умолчанию не читает .htaccess: в его настройках для папки /var/www/ стоит AllowOverride None. Если сайт переехал с хостинга и правила из .htaccess не действуют, разрешите их для папки сайта.

Команды вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — наберите пароль и нажмите Enter.

Откройте файл настроек сайта:

sudo nano /etc/apache2/sites-available/example.com.conf

Вместо example.com.conf — файл вашего сайта: список покажет ls /etc/apache2/sites-enabled/. В начало файла, перед строкой <VirtualHost *:80>, добавьте блок — путь замените на папку своего сайта:

<Directory /var/www/example.com>
    AllowOverride All
</Directory>

Блок стоит вне <VirtualHost>, поэтому действует и для HTTP, и для HTTPS. Затем включите модуль переадресаций mod_rewrite — в Ubuntu после установки Apache он выключен:

sudo a2enmod rewrite

Сохраните файл — Ctrl+O, Enter, затем Ctrl+X — и проверьте настройки: sudo apache2ctl configtest. В конце ответа должно быть Syntax OK. Тогда примените их: sudo systemctl restart apache2.

Если вместо Syntax OK пришла ошибка, Apache назовёт файл и номер строки: исправьте её и проверьте снова. Пока проверка не прошла, перезапуск не делайте.

Создать или открыть .htaccess на сервере можно так: sudo nano /var/www/example.com/.htaccess. Сохраните файл: в nano — Ctrl+O, Enter, затем Ctrl+X.

Какие задачи решает .htaccess

ЗадачаЧто пишут в файлеПодробно
переадресация с HTTP на HTTPSRewriteCond и RewriteRule, условие у каждого хостинга своёПереадресация на HTTPS
адрес с www или безRewriteCond %{HTTP_HOST}Переадресация с www
301 со старых страниц и доменовRedirect 301Переадресация 301
свои правила для адресовRewriteRuleКак устроен RewriteRule
закрыть папку или файл, пустить только свой IPRequireЗапрет доступа
пароль на папкуAuthType Basic и файл паролейПароль на папку
своя страница 404ErrorDocumentСвоя страница ошибки
кэширование в браузереExpiresByTypeКэширование
сжатие страницAddOutputFilterByType DEFLATEСжатие gzip
настройки PHPphp_value или файл .user.iniНастройки PHP в .htaccess
правила не работают или ошибка 500—Почему .htaccess не работает
сайт на nginx—Как перенести правила в nginx

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

Что видитеЧто делать
после сохранения .htaccess все страницы отдают ошибку 500верните копию файла и добавляйте строки по одной; сообщения в журнале — разбор
правила не действуют, ошибки нетпроверьте имя файла и папку; на VPS — разрешите .htaccess; на nginx — перенесите правила
файла .htaccess не видновключите показ скрытых файлов
после правки ошибка 403проверьте строки с Require, Deny и Allow — Запрет доступа через .htaccess
браузер пишет о слишком большом числе переадресацийразбор ошибки ERR_TOO_MANY_REDIRECTS

Источники

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

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