.htaccess на разных хостингах и панелях
Работает ли .htaccess на вашем хостинге — зависит не от вас, а от сервера: Apache или нет, и как настроена директива AllowOverride в конфиге. Здесь — обзор популярных хостингов и панелей управления: cPanel, ISPmanager, Plesk, Beget, Timeweb, Reg.ru, LiteSpeed, OpenLiteSpeed, чистый nginx. Для каждого — читается ли .htaccess, типичный AllowOverride, где error.log, известные особенности. Если .htaccess не работает — гид «Почему .htaccess не работает»; проверить синтаксис — линтер; перевести правила в nginx — конвертер.
Точные детали зависят от конфигурации конкретного провайдера и могут меняться — уточняйте в поддержке конкретного хостинга.
1. AllowOverride: что это и кто его задаёт
Директива AllowOverride в конфиге Apache (в блоке <Directory> или vhost) определяет, какие классы директив разрешено использовать в .htaccess. Её задаёт хостинг — вы её не контролируете (на shared) или настраиваете сами (на VPS).
AllowOverride All— разрешены все директивы,.htaccessработает полностью. Типично для shared-хостингов.AllowOverride FileInfo Options AuthConfig Limit Indexes— разрешены перечисленные классы. Большинство задач выполнимо.AllowOverride None—.htaccessполностью игнорируется Apache. Частый дефолт на VPS (Debian/Ubuntu/CentOS с пакетным Apache) без панели управления.
Если AllowOverride не включает Options, директива Options … в .htaccess даёт 500 Internal Server Error с сообщением Options not allowed here. Если не включает FileInfo — не работают Header, RewriteEngine, AddType.
Как проверить, читается ли .htaccess: добавьте первой строкой заведомо неверную команду — должна появиться 500 Internal Server Error (подробнее — /errors/#ignored):
ESJDKLKJЕсли 500 появляется — .htaccess читается (Apache его применяет). Если нет — AllowOverride None или сервер вообще не Apache. Уточните в поддержке хостинга.
Директива <Directory> задаётся только в конфиге сервера или vhost — не в .htaccess. На VPS вы можете добавить её в vhost-конфиг сайта (это конфиг сервера, не .htaccess):
<Directory /var/www/example.com/public_html> AllowOverride All Require all granted </Directory>
После изменения vhost-конфига — перезапустите Apache: apachectl restart (или systemctl restart apache2 / httpd). Подробнее про группы AllowOverride и перенос правил в конфиг — статья «AllowOverride и .htaccess vs httpd.conf». Узнать, какой AllowOverride нужен именно вашему .htaccess — проверка совместимости.
2. Shared-хостинг vs VPS/выделенный
Тип сервера сильно влияет на то, как работает .htaccess:
- Shared-хостинг (один сервер, много аккаунтов) — как правило,
AllowOverride Allили близко к нему..htaccessработает «из коробки». Ограничение: не весь модуль, не все директивы могут быть доступны (например,php_value/php_flagне работают на PHP-FPM — используйте.user.ini). - VPS / выделенный сервер без панели — Apache из пакетного менеджера (apt/yum) часто имеет дефолт
AllowOverride None. Нужно вручную добавитьAllowOverride Allв vhost и перезапустить Apache. - VPS с панелью управления (ISPmanager, cPanel, Plesk) — панель, как правило, сама выставляет
AllowOverride Allдля добавленных сайтов..htaccessработает.
Если у вас VPS и вы только что установили Apache из пакета — первым делом проверьте AllowOverride в конфиге (обычно /etc/apache2/sites-available/ или /etc/httpd/conf.d/) и при необходимости поставьте AllowOverride All.
3. cPanel (Bluehost, HostGator, SiteGround, Reg.ru и другие)
cPanel — одна из самых распространённых панелей управления хостингом. Хостинги на базе cPanel (многие зарубежные, а также Reg.ru, SprintHost и другие российские провайдеры) используют Apache (часто с nginx-фронтом для статики).
- .htaccess читается: да,
AllowOverride All— стандарт для cPanel. - error.log: cPanel → «Metrics → Errors» или файл
~/logs/error_log. - nginx-фронт: многие хостинги на cPanel ставят nginx перед Apache. Статика (CSS, JS, картинки) отдаётся nginx и может кэшироваться. Если вы меняете заголовки через
.htaccessдля статических файлов — изменения могут «не видеться» сразу. Сбросьте кэш nginx в панели (обычно «nginx → Очистить кэш»). - EasyApache 4: cPanel использует EasyApache 4 для управления модулями Apache. Если модуль не установлен (
mod_headers,mod_expires) — оберните директивы в<IfModule>, чтобы не получать 500:
<IfModule mod_headers.c> Header set X-Content-Type-Options "nosniff" Header set X-Frame-Options "SAMEORIGIN" </IfModule>
- MultiPHP (PHP-FPM): cPanel поддерживает несколько версий PHP через MultiPHP. Если PHP работает через FPM (не mod_php), директивы
php_valueиphp_flagв.htaccessНЕ работают — дают500 Internal Server Error. Используйте.user.iniв корне сайта или MultiPHP INI Editor в панели.
display_errors = Off upload_max_filesize = 16M post_max_size = 20M max_execution_time = 60
Уточните в поддержке конкретного хостинга — точные детали зависят от конфигурации провайдера.
4. ISPmanager / Plesk
ISPmanager (BITrix ISP) и Plesk — популярные панели управления в России и СНГ, используются как на shared, так и на VPS.
- .htaccess читается: да, при стандартной настройке «Apache + nginx». Панель выставляет
AllowOverride Allдля сайтов. - Архитектура: nginx-фронт + Apache-бэк.
.htaccessобрабатывается Apache-бэком. Статика отдаётся nginx и может кэшироваться. - error.log: в ISPmanager — раздел «Журналы»; в Plesk — «Logs» сайта (в разделе управления доменом).
- Plesk — «Proxy mode» (только nginx): если в настройках домена в Plesk включён режим «Proxy mode» без Apache-бэка —
.htaccessНЕ работает. Проверьте настройку «Apache & nginx settings» для домена. - ISPmanager — режим «только nginx»: аналогично: если сайт настроен в режиме «только nginx» —
.htaccessигнорируется. Нужен режим «nginx + Apache». - Plesk — директивы напрямую в vhost: в Plesk можно добавить директивы Apache напрямую в vhost («Apache & nginx settings → Additional directives for Apache»). Это альтернатива
.htaccess— иногда удобнее.
Уточните в поддержке конкретного хостинга — точные детали зависят от конфигурации провайдера.
5. Российские shared-хостинги (Beget, Timeweb, Reg.ru, Sprinthost, Hostland, Джино, Masterhost)
Большинство российских shared-хостингов используют Apache (часто с nginx-фронтом) и имеют AllowOverride All. .htaccess работает.
- .htaccess читается: да (Apache с
AllowOverride All). - error.log: обычно в панели управления — раздел «Логи» / «Журналы» или
~/logs/. Точный путь уточняйте в документации хостинга. - CMS-автоустановщики: при установке CMS (WordPress, Joomla и др.) через автоустановщик хостинг может создать свой дефолтный
.htaccess. Проверьте наличие файла перед созданием своего. - php_value / php_flag: зависит от того, как подключён PHP. На mod_php — работают. На PHP-FPM (FreeBSD/LiteSpeed-стек) — не работают, используйте
.user.ini. У некоторых хостингов (например, Beget) есть отдельная панель настроек PHP — там удобнее. - Beget: собственная система управления PHP-версиями и настройками;
.htaccessработает; есть nginx-фронт. - Timeweb:
.htaccessработает; есть nginx-фронт; error.log в панели «Логи».
Уточните в поддержке конкретного хостинга — точные детали меняются.
6. LiteSpeed Enterprise / OpenLiteSpeed
LiteSpeed — семейство высокопроизводительных веб-серверов. Важно различать две ветки:
- LiteSpeed Enterprise — коммерческая, drop-in замена Apache. Читает
.htaccessс высокой совместимостью:mod_rewrite,mod_headers,mod_expires,mod_authи т.д. Дополнительно поддерживает LSCache (мощный серверный кэш). - OpenLiteSpeed (бесплатная) — по умолчанию на shared-хостинге
.htaccessможет не читаться. В adminпанели можно включить: Virtual Host → Rewrite → «Auto Load from .htaccess» = Yes. На хостингах, использующих OpenLiteSpeed (Hostinger и другие), обычно эта опция включена.
LSCache-директивы в .htaccess специфичны для LiteSpeed — на Apache они безопасно игнорируются, если обёрнуты в <IfModule LiteSpeed>:
<IfModule LiteSpeed> CacheLookup on RewriteEngine On RewriteRule .* - [E=Cache-Control:no-cache] </IfModule>
- error.log на LiteSpeed:
/usr/local/lsws/logs/error.logили в панели управления OpenLiteSpeed WebAdmin. - Хостинги на LiteSpeed (Hostinger, NameHero, многие другие) — обычно
.htaccessработает «из коробки».
Уточните в поддержке конкретного хостинга — точные детали зависят от конфигурации провайдера.
7. Чистый nginx (без Apache)
На чистом nginx файл .htaccess не работает вообще — nginx его не читает. Все правила (редиректы, переписывание URL, заголовки, контроль доступа) нужно переносить в конфиг nginx (server { … }).
Перевести правила .htaccess в nginx-конфиг поможет конвертер .htaccess → nginx (примерный перевод — проверяйте вручную).
- Платформы и хостинги на чистом nginx: Vercel, Netlify (там свои форматы —
_redirects,vercel.json), некоторые VPS-стеки, Docker-образы с nginx без Apache. - Как определить: проверьте заголовок
Server:в ответе сервера:
curl -I https://example.comЕсли в ответе Server: nginx — это чистый nginx или nginx-фронт. Если Server: Apache или Server: LiteSpeed — .htaccess читается (при условии правильного AllowOverride).
- Nginx + Apache-бэк (ISPmanager, Plesk, cPanel с nginx) —
.htaccessобрабатывается Apache-бэком, несмотря на то что nginx-фронт отдаётServer: nginx. В этом случае.htaccessработает для динамических запросов (PHP), но не обязательно для статики. - Если сервер — чистый nginx, а у вас есть правила из
.htaccess— используйте конвертер.
8. Где искать error.log по хостингам
При любой ошибке .htaccess — первым делом смотрите error.log: там точная строка файла и причина (ссылка /errors/#diagnostics).
- cPanel — «Metrics → Errors» в панели, или файл
~/logs/error_log(иногда~/logs/yourdomain.com-error_log). - ISPmanager — раздел «Журналы» в панели управления.
- Plesk — «Logs» / «Журналы» в разделе управления сайтом.
- Beget — панель «Статистика» → «Логи», или
~/logs/. - Timeweb — раздел «Логи» в панели управления.
- Reg.ru — раздел «Журналы» / «Логи» в панели.
- VPS Debian / Ubuntu (без панели) —
/var/log/apache2/error.log(общий), или путь из директивыErrorLogв vhost-конфиге сайта. - VPS CentOS / RHEL (без панели) —
/var/log/httpd/error_log. - LiteSpeed / OpenLiteSpeed —
/usr/local/lsws/logs/error.logили в WebAdmin-панели OpenLiteSpeed.
Если не можете найти error.log — обратитесь в поддержку хостинга или ищите в документации провайдера.
9. Что делать, если .htaccess не работает на вашем хостинге
Пошаговый алгоритм:
- Убедитесь, что сервер — Apache или LiteSpeed (не чистый nginx). Выполните
curl -I https://ваш-сайт.ruи проверьте заголовокServer:. На чистом nginx.htaccessне работает — см. раздел 7. Проверить ваш сайт онлайн (тип сервера, HTTPS, заголовки) — чекер сервера. - Убедитесь, что файл называется именно
.htaccess(с точкой в начале) и лежит в корне нужного каталога (обычноpublic_html,wwwилиhtdocs). На Windows файл легко сохраняется как.htaccess.txt— включите показ расширений в Проводнике. - Проверьте, читается ли .htaccess — добавьте
ESJDKLKJпервой строкой и обновите страницу. Должна появиться500 Internal Server Error. Если нет — файл не читается: вероятно,AllowOverride None. Обратитесь в поддержку хостинга (на shared) или поправьте vhost (на VPS). - Если появилась 500 — смотрите
error.log(см. раздел 8). Там точная причина. Оберните проблемную директиву в<IfModule>, уберитеphp_value/php_flag(используйте.user.ini). - Если сервер nginx — переносите правила в nginx-конфиг с помощью конвертера.
- Если за nginx-фронтом и не видно изменений заголовков/кэша — сбросьте кэш nginx в панели управления.
Полный гид по симптомам («500», «403», «404», «не действует») — «Почему .htaccess не работает». Проверить синтаксис — линтер.
10. Чеклист: совместимость .htaccess с хостингом за 5 минут
- Сервер — Apache или LiteSpeed (не чистый nginx)? Проверьте:
curl -I https://ваш-сайт.ru→ смотритеServer:. — раздел 7 .htaccessчитается? ДобавьтеESJDKLKJпервой строкой → должна появиться 500. Если нет —AllowOverride None, нужно исправить. — раздел 1AllowOverrideдостаточно широкий? ПопробуйтеOptions +Indexesв.htaccess: если 500 с «not allowed here» — нужен более широкийAllowOverride. — раздел 1- Нужные модули включены (
mod_rewrite,mod_headers,mod_expires)? Оберните директивы в<IfModule>— безопасно. — раздел 3 php_value/php_flagработают (mod_php) или нужен.user.ini(PHP-FPM)? — раздел 3- Где
error.logна вашем хостинге? — раздел 8 - Есть ли nginx-фронт с кэшем? Изменения видны не сразу — нужно сбросить кэш в панели. — раздел 3, раздел 4
11. Ссылки и инструменты
- Гид «Почему .htaccess не работает» — 500 / 403 / 404, бесконечный редирект, .htaccess игнорируется — симптом → причина → исправление.
- Линтер .htaccess — проверить синтаксис, найти типовые ошибки.
- Аудит безопасности .htaccess — автоматически найти пробелы в защите.
- Конвертер .htaccess → nginx — перевести правила на nginx-конфиг.
- Безопасность сайта через .htaccess — защита файлов, доступ по IP, hardening.
- Ускорение сайта через .htaccess — кэш статики, gzip / Brotli, ETag.
- Генератор .htaccess — готовые блоки с чекбоксами.
- статья «AllowOverride и .htaccess vs httpd.conf» — группы AllowOverride и перенос правил в конфиг.
- Справочник директив → Core — документация по директивам Apache.
- Чекер сервера — проверить ваш сайт онлайн (тип сервера, HTTPS, заголовки безопасности, доступен ли
.htaccess).