htaccess Error означает, что файл .htaccess содержит неправильные правила или конфликтующие директивы. Из-за этого сайт может показывать 500 Internal Server Error, 403 Forbidden, Too Many Redirects, белый экран WordPress или вообще не открываться.
Чаще всего проблема появляется после установки плагина, настройки редиректов, SSL, кэша, защиты сайта или переноса WordPress на другой хостинг.
Quick Fix
- Подключитесь к сайту через файловый менеджер хостинга или FTP.
- Найдите файл
.htaccessв корневой папке сайта. - Переименуйте его в
.htaccess_old. - Проверьте, заработал ли сайт.
- Если сайт заработал, проблема точно была в
.htaccess. - Для WordPress зайдите в Настройки → Постоянные ссылки и нажмите Сохранить изменения.
- WordPress создаст новый чистый
.htaccess. - Потом возвращайте старые правила по одному и проверяйте сайт после каждого изменения.
Что такое .htaccess
.htaccess — это конфигурационный файл Apache, который управляет поведением сайта на уровне папки. Он может отвечать за редиректы, ЧПУ-ссылки, доступ к файлам, кэширование, HTTPS, защиту админки и обработку ошибок.
На WordPress файл .htaccess обычно находится в корневой папке сайта, рядом с папками:
wp-adminwp-contentwp-includeswp-config.php
Важно: файл начинается с точки. Поэтому в некоторых файловых менеджерах он может быть скрыт. Нужно включить показ скрытых файлов.
Как понять, что проблема именно в .htaccess
Ошибка в .htaccess часто проявляется сразу после изменения настроек сайта. Например, вы поставили SSL-плагин, включили редирект на HTTPS, изменили постоянные ссылки или добавили правила кэша — и сайт перестал работать.
Типичные признаки:
- появилась ошибка 500 Internal Server Error;
- сайт показывает 403 Forbidden;
- страницы WordPress дают 404, хотя записи существуют;
- начался бесконечный редирект;
- браузер пишет Too Many Redirects;
- админка WordPress не открывается;
- главная страница работает, а внутренние страницы нет;
- после установки плагина сайт сломался;
- после переноса на другой хостинг сайт не открывается.
Основные причины htaccess Error
1. Неправильный синтаксис
Одна ошибка в строке может сломать весь сайт. Например, неправильная директива, лишний символ, неверная кавычка или правило, которое Apache не понимает.
Пример проблемной строки:
RewriteRule ^old-page$ /new-page [R=301,L
Здесь не закрыта квадратная скобка. Правильно:
RewriteRule ^old-page$ /new-page [R=301,L]
2. Модуль mod_rewrite отключён
Для правил WordPress и редиректов нужен модуль Apache mod_rewrite. Если он отключён, правила RewriteEngine, RewriteCond и RewriteRule могут вызвать ошибку.
На VPS можно включить модуль командой:
sudo a2enmod rewrite
sudo systemctl restart apache2
3. Директива запрещена настройками хостинга
Не все директивы разрешены в .htaccess. На shared-хостинге некоторые команды могут быть запрещены.
Например, проблема может быть с такими директивами:
Optionsphp_valuephp_flagSetHandlerHeaderRequire
Если хостинг не разрешает такую директиву, сайт может показать 500 Internal Server Error.
4. Конфликт редиректов
Очень частая причина — конфликт между несколькими редиректами. Например, один блок перенаправляет HTTP на HTTPS, другой — HTTPS обратно на HTTP, третий добавляет www, а четвёртый убирает www.
В результате браузер показывает:
ERR_TOO_MANY_REDIRECTSToo Many RedirectsThe page isn’t redirecting properly
5. Конфликт с WordPress-плагином
Плагины кэша, безопасности, SSL и редиректов часто добавляют свои правила в .htaccess. Если два плагина добавляют похожие правила, сайт может сломаться.
Чаще всего виноваты:
- SSL-плагины;
- плагины редиректов;
- плагины безопасности;
- плагины кэша;
- плагины оптимизации скорости;
- плагины защиты
wp-admin.
6. Неправильные правила после миграции сайта
После переноса сайта на другой домен, сервер или папку старый .htaccess может содержать неправильные пути и редиректы.
Например:
- старый домен в редиректе;
- неправильная папка сайта;
- старые правила HTTPS;
- правила, подходящие только для старого хостинга;
- директивы, которые новый хостинг не поддерживает.
7. Неправильные права на файл
Если права на .htaccess слишком строгие или слишком открытые, сервер может не прочитать файл или хостинг может заблокировать его.
Обычно для .htaccess подходят права:
644
Для папок обычно:
755
Как найти проблему в .htaccess
1. Сделайте резервную копию
Перед любыми изменениями скачайте файл .htaccess на компьютер или создайте копию в файловом менеджере.
Например:
.htaccess_backup
Так вы сможете быстро вернуть старую версию, если что-то пойдёт не так.
2. Переименуйте .htaccess
Самый быстрый тест — временно отключить файл.
Переименуйте:
.htaccess
в:
.htaccess_old
После этого откройте сайт в браузере.
Если сайт заработал, значит проблема была в .htaccess. Если сайт не заработал, причина может быть в PHP, плагине, теме, базе данных, Apache, Nginx, SSL или хостинге.
3. Создайте чистый .htaccess для WordPress
Для обычного WordPress используйте стандартный код:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Сохраните файл как .htaccess в корневой папке сайта.
После этого зайдите в WordPress:
Настройки → Постоянные ссылки → Сохранить изменения
Это обновит правила ЧПУ.
4. Добавляйте старые правила по одному
Если чистый файл работает, проблема находится в одном из дополнительных блоков.
Возвращайте старые правила по одному:
- сначала WordPress-блок;
- потом HTTPS-редирект;
- потом www/non-www редирект;
- потом кэш;
- потом security-правила;
- потом дополнительные 301-редиректы.
После каждого блока обновляйте сайт. Так вы быстро найдёте правило, которое ломает сайт.
5. Проверьте логи ошибок Apache
Если у вас VPS, подключитесь по SSH и посмотрите лог:
sudo tail -n 100 /var/log/apache2/error.log
На CentOS, AlmaLinux или Rocky Linux:
sudo tail -n 100 /var/log/httpd/error_log
В логах часто видно точную причину:
Invalid commandRewriteRule: bad flag delimitersOptions FollowSymLinks not allowed hereRequest exceeded the limit of 10 internal redirectsFile does not exist
6. Проверьте, включён ли AllowOverride
На VPS Apache может игнорировать .htaccess, если в конфигурации отключён AllowOverride.
В VirtualHost или конфигурации сайта должно быть:
<Directory /var/www/example.com>
AllowOverride All
Require all granted
</Directory>
Если стоит:
AllowOverride None
то .htaccess не будет работать.
После изменения конфигурации проверьте Apache:
sudo apachectl configtest
sudo systemctl reload apache2
7. Проверьте редиректы
Если проблема в бесконечном редиректе, проверьте, не дублируются ли правила.
Например, редирект на HTTPS может быть сразу в нескольких местах:
- в
.htaccess; - в WordPress-плагине;
- в настройках хостинга;
- в Cloudflare;
- в конфигурации Apache или Nginx.
Оставьте редирект только в одном месте.
Готовый правильный .htaccess для WordPress
Для большинства WordPress-сайтов базовый файл выглядит так:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Если сайт находится в подпапке, правила могут отличаться. В таком случае лучше пересохранить постоянные ссылки в WordPress, чтобы система сама создала правильный вариант.
Пример редиректа HTTP на HTTPS
Если SSL уже установлен и сайт корректно открывается по HTTPS, можно использовать такой редирект:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Не добавляйте этот код, если HTTPS ещё не настроен. Иначе сайт может уйти в ошибку или бесконечный редирект.
Пример редиректа с www на non-www
Если основной адрес сайта без www, можно использовать:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
</IfModule>
Замените example.com на свой домен.
Пример редиректа с non-www на www
Если основной адрес сайта с www, используйте:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
</IfModule>
Важно: используйте только один вариант — либо www, либо non-www. Не ставьте оба правила одновременно.
Частые ошибки в .htaccess
500 Internal Server Error
Самый частый симптом ошибки в .htaccess. Причина может быть в неправильной директиве, отключённом модуле, запрещённом правиле или ошибке синтаксиса.
Быстрый тест: переименуйте .htaccess в .htaccess_old. Если сайт заработал, проблема найдена.
Too Many Redirects
Означает, что сайт попал в цикл редиректов. Например, одно правило отправляет на HTTPS, а другое возвращает обратно на HTTP.
Проверьте редиректы в:
.htaccess;- WordPress;
- Cloudflare;
- панели хостинга;
- SSL-плагинах;
- плагинах редиректов.
403 Forbidden
Может быть вызвано правилами запрета доступа. Например:
Deny from all
или неправильным блоком:
Require all denied
Также проверьте права на папки и файлы.
404 на всех внутренних страницах WordPress
Если главная страница работает, а записи и страницы показывают 404, скорее всего сломаны правила постоянных ссылок.
Решение:
WordPress → Настройки → Постоянные ссылки → Сохранить изменения
Если не помогло, проверьте, включён ли mod_rewrite и разрешён ли AllowOverride All.
Ошибка после установки SSL
Проверьте, нет ли одновременно нескольких HTTPS-редиректов. Особенно если вы используете Cloudflare или SSL-плагин.
Правило простое: редирект на HTTPS должен быть только в одном месте.
Advanced Troubleshooting
Проверьте .htaccess на лишние блоки от плагинов
Многие плагины добавляют блоки между комментариями:
# BEGIN Plugin Name
...
# END Plugin Name
Если сайт сломался после установки или обновления плагина, временно удалите блок этого плагина из .htaccess и проверьте сайт.
Проверьте php_value и php_flag
На многих современных хостингах директивы php_value и php_flag запрещены, особенно если PHP работает через PHP-FPM.
Пример проблемного кода:
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_flag display_errors Off
Если после добавления таких строк появляется 500 ошибка, удалите их и настройте PHP-параметры через панель хостинга, .user.ini или php.ini.
Проверьте директиву Options
Некоторые хостинги запрещают отдельные параметры Options. Например:
Options FollowSymLinks
Может вызвать ошибку, если сервер не разрешает эту директиву в .htaccess.
Иногда помогает заменить на:
Options +FollowSymLinks
Но лучше уточнить правила у хостинга.
Проверьте лимит внутренних редиректов
Если в логах есть:
Request exceeded the limit of 10 internal redirects
значит правила зациклились. Временно отключите кастомные RewriteRule и оставьте только стандартный блок WordPress.
Проверьте сайт за Cloudflare
Если сайт работает через Cloudflare, не дублируйте редиректы везде сразу.
Опасная схема:
- Cloudflare делает Always Use HTTPS;
- WordPress-плагин делает HTTPS-редирект;
.htaccessделает HTTPS-редирект;- хостинг делает ещё один редирект.
Лучше оставить один стабильный редирект: на сервере или в Cloudflare, но не в четырёх местах одновременно.
Как безопасно редактировать .htaccess
- Всегда делайте копию файла перед изменениями.
- Не вставляйте сразу большой кусок кода.
- Добавляйте правила по одному.
- После каждого изменения проверяйте сайт.
- Не используйте два противоположных редиректа одновременно.
- Не копируйте правила с чужого сайта без понимания.
- Не редактируйте
# BEGIN WordPressблок вручную без необходимости. - Если сайт сломался, сразу переименуйте файл в
.htaccess_old.
Когда обращаться в поддержку хостинга
Обратитесь в поддержку, если:
- вы не видите файл
.htaccessв файловом менеджере; - после переименования
.htaccessсайт всё равно не работает; - хостинг блокирует нужные директивы;
- вы не знаете, включён ли
mod_rewrite; - внутренние страницы WordPress продолжают показывать 404;
- после установки SSL начался редирект-луп;
- ошибка появилась после миграции сайта.
Перед обращением подготовьте скрин ошибки, текущий файл .htaccess и время, когда проблема появилась. Это поможет поддержке быстрее найти причину.
FAQ
Как понять, что ошибка в .htaccess?
Переименуйте файл .htaccess в .htaccess_old и откройте сайт. Если сайт заработал, проблема была в этом файле.
Где находится .htaccess в WordPress?
Обычно он находится в корневой папке сайта, рядом с wp-config.php и папками wp-admin, wp-content, wp-includes.
Почему после изменения .htaccess появилась 500 ошибка?
Скорее всего, в файле есть неправильная директива, ошибка синтаксиса, отключённый модуль Apache или правило, которое запрещено на вашем хостинге.
Как восстановить стандартный .htaccess WordPress?
Удалите или переименуйте старый файл. Затем зайдите в WordPress: Настройки → Постоянные ссылки и нажмите Сохранить изменения. WordPress создаст новый файл.
Можно ли удалить .htaccess?
Можно временно переименовать или удалить файл для проверки. Но для WordPress он нужен для красивых ссылок и правильной работы внутренних страниц. Лучше создать новый чистый файл, а не оставлять сайт без него.
Вывод
htaccess Error чаще всего вызывает 500 ошибку, редирект-луп, 403 Forbidden или 404 на внутренних страницах WordPress. Самый быстрый способ найти проблему — переименовать .htaccess, проверить сайт и затем создать чистый файл.
Не возвращайте все старые правила сразу. Добавляйте их по одному и проверяйте сайт после каждого изменения. Так вы точно найдёте строку, которая ломает сайт.
