Документация / .htaccess — два режима, и какой из них вам нужен

.htaccess — два режима, и какой из них вам нужен

Если вы что-то добавили в .htaccess, а сайт ведёт себя так, будто вы этого не делали, прочитайте сначала это. Ничего не сломано — ваш сайт, вероятно, в режиме, который переводит .htaccess, а не читает его, а перевод покрывает распространённые правила, но не все.

Откройте Домены → Apache / .htaccess. Значок вверху карточки говорит, в каком режиме находится этот сайт.

Два режима

Переведённый (по умолчанию). Ваш .htaccess преобразуется в собственные правила быстрого веб-сервера. Распространённые директивы работают. Всё, что конвертер не может воспроизвести, пропускается, и это перечислено для вас в таблице под карточкой. Изменение файла вступает в силу только после нажатия Translate now — файл не читается на каждый запрос.

Полный .htaccess. Ваш файл читается напрямую, ровно так, как он был на cPanel. Работает каждая директива, которую поддерживает Apache, и изменение вступает в силу на самом следующем запросе. Немного медленнее переведённого режима, потому что каждый запрос проходит через один дополнительный шаг.

Какой из них вам нужен

Останьтесь на Переведённом, если ваш .htaccess — это блок permalink'ов WordPress, редирект принудительного HTTPS, редирект www/не-www, строка Redirect, переключатель списка каталога или защита basic-auth. Это большинство сайтов, и это более быстрый путь.

Включите Полный .htaccess, если:

  • таблица под карточкой перечисляет директивы, которые вам действительно нужны,
  • вы задаёте значения PHP из .htaccess (php_value, php_flag) — они никогда не применяются в переведённом режиме, что бы ни говорил файл,
  • вы используете SetEnv, SetEnvIf, RequestHeader, AddType, AddHandler или правила rewrite с условиями, о которых конвертер предупреждает,
  • или вы переносите сайт откуда-то ещё и предпочли бы вовсе не проверять его .htaccess.

За выбор полной поддержки нет никакой платы, кроме небольшой задержки. Нет никакой платы, нет дополнительного шага после и нет конфигурации.

Как читать таблицу

Под карточкой режима каждая строка — это одна директива, которую конвертер не смог воспроизвести, с её номером строки и тем, что с этим делать.

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

Если таблица пуста, ничто в вашем .htaccess не теряется, и переведённый режим делает всё, что просит файл.

Переключение

Одна кнопка. В переведённом режиме она гласит Turn on full .htaccess support; в полном режиме — Switch to translated (faster).

  • Это занимает несколько секунд. Карточка говорит Applying — this can take a few seconds…, пока работает.
  • Ваш сайт не падает. Новый путь ставится на место до того, как убирается старый, в обоих направлениях, и если какая-то часть не удаётся, обе стороны возвращаются как были.
  • Ничего больше об аккаунте не меняется. Ваши файлы, ваш корень документов, ваша версия PHP, ваш сертификат и весь ваш HTTPS остаются ровно как есть. PHP вашего сайта по-прежнему работает от вашего собственного пользователя, изолированный от каждого другого аккаунта на сервере, в обоих режимах.
  • Адреса посетителей в вашем журнале доступа остаются настоящими адресами посетителей.
  • Вы можете переключиться обратно в любой момент, сколько угодно раз.

Переход с cPanel

Вам не нужно ничего делать. Когда аккаунт импортируется из резервной копии cPanel, импортёр переводит файлы .htaccess, которые находит, и если какую-либо директиву перевести нельзя, аккаунт сразу переводится в полный режим .htaccess. Сайт ведёт себя так же, как на старом сервере, с самого первого запроса.

Отчёт об импорте показывает это двумя строками: сколько правил переведено и сколько требуют проверки, а затем — был ли переключён режим.

Сайты, которым никогда не требовалось ничего необычного, остаются на более быстром переведённом пути.

Когда что-то выглядит неправильно

Правило по-прежнему ничего не делает после того, как вы отредактировали файл, и вы в переведённом режиме. Нажмите Translate now. В этом режиме файл читается, когда вы просите, а не на каждый запрос.

Каждая страница отвечает HTTP 500 сразу после включения полной поддержки. Переключитесь обратно — кнопка возвращает вас, где вы были — и сообщите своему хостинг-провайдеру, что произошло. Это значит, что у Apache на том сервере отсутствует модуль, который нужен вашему файлу (RewriteEngine On — обычный такой случай). Это серверная настройка, а не то, что вы можете исправить из своего аккаунта.

Каждая страница отвечает 502, и вы в полном режиме. Процесс Apache на сервере не запущен. Сайты в переведённом режиме не затронуты, что полезно сообщить вашему провайдеру.

Переключение отклонено с сообщением о портах Apache. У сервера кончились слоты, которые он выделяет для этого режима. Только ваш провайдер может их увеличить.

Плитки Apache / .htaccess нет в вашей панели вообще. Либо ваш тарифный план её не включает, либо сервер не был настроен с доступным Apache. Спросите у провайдера, что именно.

Что полный режим не меняет

  • Ваш сертификат. HTTPS завершается до того, как Apache вообще увидит запрос, так что выпуск и обновление не затронуты.
  • Изоляцию. PHP работает от собственного пользователя вашего аккаунта в обоих режимах.
  • Ваши показатели трафика и статистику посетителей.
  • Любой другой аккаунт на сервере. Эта настройка только ваша — она решается для каждого аккаунта, а не для сервера.