Файл .htaccess: что это и как с ним работать
Файл .htaccess — настройки веб-сервера Apache для одной папки сайта. В нём включают переадресацию на HTTPS, закрывают папки паролем, задают свою страницу 404 и кэширование. Правка действует сразу после сохранения, а ошибка в файле даёт ошибку 500.
Содержание 12
Что сделать прямо сейчас
- Откройте файловый менеджер в панели хостинга и перейдите в папку сайта — ту, где лежит index.php или index.html.
- Найдите в ней файл .htaccess. Если его не видно, включите показ скрытых файлов — как это сделать.
- Если файла нет, создайте его — как создать файл.
- Перед правкой сохраните копию файла .htaccess к себе на компьютер: если что-то пойдёт не так, её можно будет вернуть.
- Добавьте нужные строки — готовые правила по задачам собраны в таблице. Сохраните файл и сразу откройте сайт. Если появилась ошибка 500, уберите добавленные строки — сайт заработает как раньше.
- Если сайт не открывается и после этого, разберитесь по шагам — что делать при ошибке 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. Его правила действуют на весь сайт. Файл в подпапке действует только на неё и её вложенные папки.
| Где сайт | Корневая папка |
|---|---|
| Timeweb | public_html в папке сайта: по справке Timeweb, .htaccess для всего сайта кладут туда |
| Beget | public_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.
Как создать файл
- В файловом менеджере панели нажмите кнопку создания файла. У Timeweb: «Файловый менеджер» → «Создать файл».
- Введите имя
.htaccess— с точкой в начале, без пробелов и без окончания .txt. У Timeweb после ввода имени нажмите «Создать». - Откройте файл двойным щелчком, впишите строки и сохраните. У 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 на всех страницах папки.
- Верните сохранённую копию файла или уберите последние добавленные строки — сайт заработает.
- Добавляйте строки по одной и после каждой открывайте сайт: так видно, какая из них ломает сайт.
- Посмотрите журнал ошибок: на хостинге — в панели, на своём 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 на HTTPS | RewriteCond и RewriteRule, условие у каждого хостинга своё | Переадресация на HTTPS |
| адрес с www или без | RewriteCond %{HTTP_HOST} | Переадресация с www |
| 301 со старых страниц и доменов | Redirect 301 | Переадресация 301 |
| свои правила для адресов | RewriteRule | Как устроен RewriteRule |
| закрыть папку или файл, пустить только свой IP | Require | Запрет доступа |
| пароль на папку | AuthType Basic и файл паролей | Пароль на папку |
| своя страница 404 | ErrorDocument | Своя страница ошибки |
| кэширование в браузере | ExpiresByType | Кэширование |
| сжатие страниц | AddOutputFilterByType DEFLATE | Сжатие gzip |
| настройки PHP | php_value или файл .user.ini | Настройки PHP в .htaccess |
| правила не работают или ошибка 500 | — | Почему .htaccess не работает |
| сайт на nginx | — | Как перенести правила в nginx |
Ошибки и как их исправить
| Что видите | Что делать |
|---|---|
| после сохранения .htaccess все страницы отдают ошибку 500 | верните копию файла и добавляйте строки по одной; сообщения в журнале — разбор |
| правила не действуют, ошибки нет | проверьте имя файла и папку; на VPS — разрешите .htaccess; на nginx — перенесите правила |
| файла .htaccess не видно | включите показ скрытых файлов |
| после правки ошибка 403 | проверьте строки с Require, Deny и Allow — Запрет доступа через .htaccess |
| браузер пишет о слишком большом числе переадресаций | разбор ошибки ERR_TOO_MANY_REDIRECTS |
Источники
- Документация Apache: файлы .htaccess — файл действует на свою папку и вложенные, читается при каждом запросе, при AllowOverride None не читается; проверка бессмысленным словом.
- Документация Apache: синтаксис файлов настроек — одна директива на строке, перенос обратной косой чертой, комментарий с # — отдельной строкой.
- Документация Apache: IfModule — строки внутри блока выполняются, только если модуль загружен, иначе Apache их пропускает; блок можно писать в .htaccess.
- Документация Apache: AllowOverride — по умолчанию None; группы AuthConfig, FileInfo, Indexes, Limit и Options; директива не из разрешённой группы даёт ошибку сервера.
- Файл apache2.conf из пакета apache2 в Ubuntu 24.04 — для /var/www/ — Options Indexes FollowSymLinks и AllowOverride None, имя файла .htaccess, запрет на файлы .ht*.
- Сценарий установки из пакета apache2 в Ubuntu 24.04 — модули, которые включаются при установке; rewrite, expires и headers в этом списке нет.
- Исходный код Apache 2.4.58: config.c — тексты Invalid command … и … not allowed here; ошибка в .htaccess даёт ответ 500, нечитаемый .htaccess — ответ 403 и запись AH00529.
- Timeweb: создание и настройка .htaccess — создание файла в файловом менеджере, метка BOM от Блокнота Windows, .htaccess для всего сайта — в public_html.
- Beget: файл .htaccess — файл действует на папку и вложенные, нижний файл переопределяет верхний; файл паролей советуют держать рядом с папкой public_html.
- Спринтхост: файл .htaccess — ошибка в директивах или посторонние символы дают ошибку 500; файл создают в файловом менеджере или загружают по FTP.
- Рег.ру: редирект с HTTP на HTTPS — показ скрытых файлов в cPanel.
Сверено 14 октября 2026 года.
Что почитать дальше
- Как установить Apache на Ubuntuсвой сайт в Apache, PHP, журналы.
- 500 Internal Server Errorвсе причины ошибки 500.
- Права на файлы сайта644 и 755: без них Apache не прочитает файлы.
- Настройки nginxесли сайт работает на nginx.