Zheleznov
@Zheleznov

Как сократить количество редиректов в .htaccess?

Добрый день всем.
Подскажите пожалуйста как избежать лишних редиректов, и можно ли это сделать на виртуальном хостинге?

Суть проблемы:
Для страницы - http: // www.site.ru/
Редиректы:
301 Перемещено навсегда https://www.site.ru/‎
301 Перемещено навсегда http://site.ru/‎
301 Перемещено навсегда https://site.ru/‎

3 редиректа, сначала с http на https, потом когда убирается www почему-то редиректит снова на http , и только потом на https без www

Можно ли объединить это в один редирект?
Чтобы сразу с www.site.ru на https://site.ru/‎ , убирая www и меняя протокол на https


htaccess
RewriteEngine On
RewriteBase /

# Переезд на https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# Убираем www 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# Блокируем доступ к файлам репозитория .hg
RewriteRule ^/?\.hg - [F,L]

# Все запросы на несуществующие файлы отправляются в index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dodo512
# Переезд на https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# Убираем www 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Просто поменять местами эти правила.
Или заменить одним правилом.
RewriteCond %{SERVER_PORT} !^443$  [OR]
RewriteCond %{HTTP_HOST}   ^www\.  [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы