Хочу рассказать Вам все о сайтах, что узнал сам за 15 лет.
Блог Виталия Жукова Vitalik.WS Свой сайт с нуля - легко!
Обо мне, как об авторе блога.
Подробнее
Vitalik.WSЗаметки → 301 редирект на www, без www и на https с помощью .htaccess

301 редирект на www, без www и на https с помощью .htaccess
Заметка на тему: htaccess

При первоначальной настройке сайта, когда ещё и от сайта то как такового почти ничего нет - только домен и хостинг, всегда необходимо убрать лишние версии будущего проекта. Как правило - это версия на www, и версия с защищенным протоколом (ssl или https), если точнее - версия без него.

Расскажу на примере своего блога - Vitalik.WS. Изначально у меня был лишь просто домен - vitalik.ws. Моя задача:
  1. убрать www (то есть мне не нужна версия www.vitalik.ws);
  2. убрать версию без https (я перенёс сайт на защищенный протокол https://vitalik.ws/ и нужно убрать стандартную версию http://vitalik.ws/).
В итоге получается, что мне нужно настроить 301 редирект в htaccess таким образом, что бы все вариации
http://www.vitalik.ws/,
http://vitalik.ws/
https://www.vitalik.ws/

приходили в итоге к https://vitalik.ws/.

Первым делом в .htaccess прописываем директиву
RewriteEngine On

Она нужна, что бы включить модуль, который будет делать 301 редиректы и обрабатывать всю информацию.

301 редирект без www в .htaccess


Первым среди 301 редиректов разберём ситуацию, когда нужно избавиться от пережитка прошлого - поддомена "www." в URL сайта. В моей задаче номер один это и нужно сделать. Поэтому, если вы хотите сделать на своём сайте 301 редирект без www, то в файле .htaccess нужно прописать:
RewriteEngine On

# not www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Обратите внимание, что в примере конечный протокол не защищенный (то есть используется http://). Если хотите сделать, что бы редирект был сразу на защищенный протокол, то замените в примере http:// на https://.

301 редирект на www в .htaccess


Если же кто-то предпочитает всё-таки вернуться или остаться на старом добром www поддомене, тогда в файле .htaccess нужно прописать:
RewriteEngine On

# on www
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

Повторюсь: обратите внимание, что в примере конечный протокол не защищенный (то есть используется http://). Если хотите сделать, что бы редирект был сразу на защищенный протокол, то замените в примере http:// на https://.

301 редирект на https в .htaccess (защищенный протокол ssl)


Если требуется сделать 301 редирект на защищенный протокол ssl (https), то в файле .htaccess нужно прописать:
RewriteEngine On

# ssl only
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

301 редирект на http в .htaccess (убираем защищенный протокол https, ssl)


Если же вы наоборот хотите вернуться к старому доброму протоколу http без шифрования, то в файле .htaccess нужно прописать:
RewriteEngine On

# not ssl
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


Как сделать 301 редирект на моём примере?


Для того, что бы сделать правильный 301 редирект в моём примере (убрать www и убрать версию без https), необходимо собрать всё описанное выше воедино и вписать в .htaccess следующий код:
RewriteEngine On

# not www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# ssl only
RewriteCond %{REQUEST_URI} !robots.txt
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


В итоге www и http вариации автоматически переадресует на https://vitalik.ws/.
Зачем же я добавил строку:
RewriteCond %{REQUEST_URI} !robots.txt

Об этом читайте в моей статье о правильном переходе на HTTPS.

Теперь Вы знаете как сделать 301 редирект на www, без www и на https с помощью .htaccess. Надеюсь, что помог Вам. Обязательно пишите свои наблюдения в комментариях.

Все комментарии к заметке "301 редирект на www, без www и на https с помощью .htaccess"

  • Комментариев еще нет.
    Оставьте свой комментарий первым!
Написать свой комментарий:
Отправить
ВНИМАНИЕ! Пожалуйста НЕ пишите в комментариях рекламу, оскорбления, бессмыслицу и прочие проявления интернет-нечисти, так как эти сообщения всеравно не будут опубликованы. Пишите исключительно по теме и ваш комментарий обязательно будет опубликован, а возможно и прокомментирован.
 Подписывайтесь на мой блог
Хотите первыми узнавать о самом интересном? Тогда подпишитесь на рассылку новостей.
Подписаться
Подписавшись на рассылку, Вы всегда будете в первую очередь узнавать о самой важной и полезной для блоггеров и веб-мастеров информации.