Редирект 301 с www и без на https

Для чего нужно прописывать редирект 301 Permanent Redirect?

Редирект 301 — это ответ сервера и перенаправление с одного url-адреса на другой.

Кроме простого, автоматического перенаправления пользователя или поисковой системы со старого адреса страницы на новый, ответ 301  укажет поисковым системам, что страница была перемещена на другой адрес и старый url можно считать устаревшим. После того, как пройдет переиндексация, поисковые системы «склеят» их и будут выдавать пользователям новый.

Но проблема в том, что мне нужно было переадресовать адрес с www и без www на новый https:// адрес без www.

Стандартная запись Rewrite для .htaccess выглядит как-то так:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]

RewriteCond %{HTTP_HOST} ^www\. [NC]

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

Либо так:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]

RewriteCond %{HTTP_HOST} ^www\. [NC]

RewriteRule ^ https://site.com.ua%{REQUEST_URI} [R=301,L,NE]

Где первой строкой мы объявляем о редиректе, RewriteCond — это условие, а RewriteRule правило.

Нельзя допускать двух и более редиректов, это вызывает лишнюю нагрузку и замедляет выдачу сайта пользователю и поисковикам.

Для хостинга ukraine.com.ua у меня упорно не работал редирект на https:// и мы коллективно выяснили, что директива RewriteCond %{HTTPS} off не отрабатывает у этого хостера.

Обращение в тех.поддержку компании дало результат, нам указали на свою директиву: RewriteCond %{HTTP:SSL} !=1

И наша запись для редиректа в .htaccess теперь выглядит так:

RewriteEngine On

RewriteCond %{HTTP:SSL} !=1 [OR]

RewriteCond %{HTTP_HOST} ^www\. [NC]

RewriteRule ^(.*)$ https://site.com.ua%{REQUEST_URI} [L,R=301]

А проверить правильность работы и отсутствие цикличности можно например на этом сайте: bertal.ru