DLE - редирект с www на без www

А нужен ли тебе редирект?


Как мы знаем, поисковые системы поступают крайне не логично и видят, а соответственно и индексируют один и тот же сайт с www и без www , как два разных сайта. То же самое происходит и в случае http и https. Теперь нужно добавить ещё 2 варианта адреса домена: c https://www.site.ru/ и c http://site.ru. Итого имеем 4 версии ! 

Методичка или учите матчасть

Чтобы собрать все эти адреса и выступить единым фронтом, то есть 1 сайтом, а не 4 зеркалами сайта, нам нужно внести правки файла htaccess, который лежит в корне Вашего сайта на сервере. Открываю свой htaccess и вижу вот такие строки, которые отвечают за редирект с www на без www:

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

Мне почему-то не нравится, что они записаны 2 раза подряд. А ещё меня не устраивает, что эта парная комбинация выполняет 301 редирект только с главной страницы https://www.wolcha.ru на версию без www - https://wolcha.ru  . Собственно так я и проверял правильность редиректа: добавлял www в адрес сайта и смотрел будет ли выполняться переадресация. 

Проверяем правильность настройки редиректа

Ещё я заходил на разного рода сервисы и тоже проверял правильность настройки редиректа, через них :

И сначала было всё ровно. И я возрадовался, и даже чуточку был горд собой.

Однако позднее, мне пришло в голову проверить как работает редирект на других страницах. Я открыл сайт, открыл новость, добавил в url www и ... Не работает!!! Бегу на другой, более информативный ресурс, выполняю анализ сайта и действительно :

Теперь , когда я снова открыл файл htaccess и увидел, что там 2 раза подряд записан редирект, то почему-то сразу подумал, что при удалении одного параметра, отвечающего за редирект, всё заработает как часы.

Сейчас записан вот такой код: 

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

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

 

Удаляем 2 строки и оставляем только:

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

 

Работа над ошибками или "redirect to www приди" 

   

Проверяем на главной странице и на любой другой методом добавления www и видим, что действия верные, но на ситуацию не влияют - редирект происходит только с главной страницы.(((

Но именно такие строчки кода рекомендуется добавить абсолютно на всех форумах и во всех статьях по запросу редиректа с www на без www или наоборот. Думаем-думаем-думаем и перемещаем эти 2 строки вверх кода файла - к правилу RewriteEngine On . В итоге, файл начинается с :

DirectoryIndex index.php

RewriteEngine On

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

Снова проверяем работоспособность редиректа на без www и вуаля!


 Все картинки кликабельны

© Автор статьи Коваленко Илья Александрович

Статья от 01.02.2019

Все права защищены

Перепечатка статьи возможна только со ссылкой на ресурс wolcha.ru

Добавить свой комментарий

Кликните на изображение чтобы обновить код, если он неразборчив
  • Яндекс.Метрика