.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 работает от собственного пользователя вашего аккаунта в обоих режимах.
- Ваши показатели трафика и статистику посетителей.
- Любой другой аккаунт на сервере. Эта настройка только ваша — она решается для каждого аккаунта, а не для сервера.