htaccess WordPress: что проверить в правилах

htaccess WordPress: что проверить в правилах

Есть файл, который правится один раз — и забывается на годы. Потом меняется хостинг, обновляется WordPress, кто-то ставит новый плагин, и сайт внезапно начинает вести себя странно: ссылки уходят в цикл, картинки не грузятся, админка не открывается. Всё это — .htaccess. Маленький файл в корне сайта, который управляет перенаправлениями, доступом и ещё десятком вещей. И именно он чаще всего становится виновником «необъяснимых» поломок.

Разберём файл по блокам — как читать его сверху вниз и что проверять в каждом.

Почему этот файл опасен

У .htaccess есть неприятное свойство: правила в нём срабатывают каскадом. Одна строка может изменить поведение всех остальных, а ошибка в синтаксисе — уронить весь сайт с ошибкой 500. Причём никакого «предупреждения» не будет: просто перестанет открываться.

Вторая особенность — файл может быть не один. Свой .htaccess есть в корне, иногда в подпапках, а часть правил добавляют плагины и сам WordPress. Поэтому прежде чем что-то менять, сохраните копию текущего файла. Это не формальность: без копии восстановить рабочее состояние бывает нечем.

Блок 1. Перенаправления и канонический адрес

Самый верхний и самый важный блок. Здесь решается, какой адрес сайта считается главным: с www или без, по http или https. Правильная настройка объединяет все варианты в один, чтобы поисковик не считал их разными сайтами.

Проверьте, что перенаправление ведёт в одну точку и не зацикливается. Классическая проблема — когда правило с http на https конфликтует с настройкой хостинга, и браузер выдаёт «слишком много перенаправлений». Сайт при этом недоступен полностью.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Обратите внимание на флаг L — он останавливает обработку после срабатывания правила. Без него может выполниться следующее, и адрес изменится дважды. И проверьте, что порядок правил соответствует логике: сначала https, потом www, а не наоборот.

Блок 2. Основа WordPress

Стандартный блок, который WordPress добавляет сам. Он отвечает за красивые ссылки и работу внутренней маршрутизации. Выглядит примерно так:

# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Трогать его вручную не нужно. Но проверить стоит две вещи. Первая — что он вообще есть и не повреждён: если строки потерялись, часть страниц начнёт отдавать 404. Вторая — что правила не дублируются: иногда WordPress добавляет блок повторно, и это создаёт лишние циклы обработки.

Если внутри этого блока появились посторонние строки, добавленные вручную, — их лучше вынести выше или ниже. При обновлении настроек WordPress перезапишет блок и всё лишнее пропадёт.

Блок 3. Редиректы старых адресов

Здесь живут правила вида «старая страница → новая». Их добавляют при редизайне, смене структуры или переносе разделов. Проверять нужно три вещи.

Во-первых, каждый редирект должен вести сразу на конечный адрес, без цепочки из двух-трёх переходов. Цепочки замедляют загрузку и теряют вес. Во-вторых, не должно быть редиректов на несуществующие страницы — они превращаются в 404. В-третьих, правила не должны конфликтовать с блоком WordPress: если редирект стоит после него, он может не сработать вовсе.

И следите за кодами. 301 — постоянный редирект, его используют в 99% случаев. 302 — временный, поисковик не переносит на новый адрес вес. Если при переезде случайно поставили 302, страница останется в индексе по старому адресу.

Блок 4. Доступ и безопасность

Сюда обычно попадают правила, закрывающие служебные файлы: wp-config.php, логи, папку с резервными копиями. Полезная штука, но с ней легко перестараться.

Проверьте, что правила не закрывают то, что должно быть доступно. Например, запрет на все файлы с расширением .php в папке загрузок — хорошая идея, а запрет на admin-ajax.php сломает половину форм и корзину. Иногда такие правила добавляют «для безопасности», а потом неделю ищут, почему не работает заявка.

Отдельно — запрет доступа к админке по IP. Если вы его настроили, убедитесь, что ваш собственный адрес не меняется (у мобильных операторов он плавает) и что в списке есть запасной IP на случай блокировки.

Блок 5. Кэш и сжатие

Правила для срока хранения файлов и gzip-сжатия. Сами по себе безобидны, но именно они иногда мешают увидеть результат обновления. Если после правок на сайте вы видите старую версию — сначала проверьте кэш, а не код.

Проверьте, что срок хранения не установлен слишком большим для файлов, которые меняются: CSS, JavaScript, шрифты. Если браузер держит их год, а вы обновили стили, посетители увидят старую версию. Для статики сроки большие — это нормально, для динамики — нет.

Если сайт перестал открываться

Самая частая причина ошибки 500 — синтаксическая ошибка в .htaccess. Порядок действий простой.

  1. Не паниковать и не менять файл наугад.
  2. Через файловый менеджер хостинга или FTP переименовать .htaccess в .htaccess.bak.
  3. Проверить, открылся ли сайт. Если да — дело точно в нём.
  4. Вернуть файл и искать ошибку построчно: лишние кавычки, незакрытые директивы, неверные флаги.
  5. Если не получается — восстановить из резервной копии.

Важно: без .htaccess WordPress обычно работает, но красивые ссылки перестанут открываться. Это временное состояние, но оно даёт доступ к админке и возможность спокойно починить файл.

Красные флаги

  • В файле есть правила, происхождение которых никто не помнит.
  • Редиректы выстроены цепочкой из двух-трёх шагов.
  • Сайт открывается по http, и перенаправления на https нет.
  • В блоке WordPress появились посторонние строки.
  • Запрет доступа закрывает нужные файлы.
  • Срок кэширования одинаковый для статики и динамики.
  • Файл меняли без копии.

Что в итоге

.htaccess — это не место для экспериментов. Читайте его сверху вниз, блок за блоком: перенаправления, основа WordPress, старые адреса, доступ, кэш. В каждом проверяйте, что правила не конфликтуют и ведут туда, куда должны. И всегда сохраняйте копию до правок — это единственная страховка от ошибки 500.

Мы обычно начинаем проверку этого файла с того, что смотрим, какие правила реально работают, а какие остались от старых экспериментов. Иногда достаточно убрать пару строк, чтобы сайт перестал зацикливаться, а иногда — переписать перенаправления под новую структуру. Напишите или оставьте заявку — посмотрим на ваш .htaccess и скажем, что стоит поправить, чтобы он не подвёл в самый неподходящий момент.

 
Менджер ZM

Чем могу помочь?

Этот сайт собирает техническую информацию (куки), которая используется для обеспечения функционирования сайта, например, сохранение настроек пользователя, поддержка аутентификации, обеспечение безопасности и конфиденциальности данных. Данный тип файлов является обязательным и не подлежит отключению. Сайт запоминает выбор настроек куки на 1 год. По окончании этого периода Сайт повторно запросит Ваше согласие.
Узнать