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