Как настроить редиректы в htaccess без цепочек
При настройке серверных перенаправлений часто возникает проблема цепочек редиректов, когда браузер выполняет несколько последовательных переходов. Это замедляет загрузку страниц и ухудшает SEO. Разберём, как объединить правила для домена, протокола и дублей слэшей в один редирект.
Почему образуются цепочки редиректов
Цепочка возникает, когда правила выполняются поочерёдно. Например, сначала срабатывает редирект с www на без www, затем с http на https, и так далее. Чтобы избежать этого, нужно все условия объединить в одном RewriteRule.
Готовые правила htaccess без цепочек
Скопируйте следующий код в файл .htaccess в корне сайта. Он обрабатывает все три задачи за один проход:
RewriteEngine On
# Единый редирект: www -> без www, http -> https, удаление лишних слэшей
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC,OR]
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{THE_REQUEST} // [OR]
RewriteCond %{REQUEST_URI} index\.(php|html|htm)$
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]Пояснение к правилу
- RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC,OR] - проверяет, есть ли www в домене.
- RewriteCond %{HTTPS} !=on [OR] - проверяет, что соединение не HTTPS.
- RewriteCond %{THE_REQUEST} // [OR] - обнаруживает двойные слэши в URL.
- RewriteCond %{REQUEST_URI} index\.(php|html|htm)$ - отлавливает index.php в конце.
- RewriteRule ^(.*)$ https://%1/$1 [R=301,L] - выполняет редирект на версию без www, с HTTPS и чистым URL.
Дополнительная настройка для разных доменов
Если у вас сложная конфигурация с несколькими доменами, используйте отдельные блоки, но располагайте их в правильном порядке. Сначала обрабатывайте www, затем протокол, потом слэши. Главное - избегать повторных условий.
Проверка результата
После добавления правил проверьте работу через сервисы вроде Redirect Checker. Введите несколько вариантов URL: с www, с http, с двойным слэшем. Убедитесь, что все они ведут сразу на конечный адрес.