Домены с www и без www – история появления, использование 301 редиректа для их склеивания

Есть мнение, и оно не безосновательно, что каждый сайт должен иметь 301 редирект, который был бы настроен так, чтобы один из сайтов, с или без www, был главным (например, для моего блога, главным является ktonanovenkogo.ru, и при заходе по адресу www.ktonanovenkogo.ru, вас автоматически перебросит на ktonanovenkogo.ru). Для чего это нужно, спросите вы? Об этом я постараюсь рассказать в этом посте, но начать, пожалуй, стоит с истории зарождении самой проблемы, связанной с использованием или не использованием приставки WWW в названии сайта.
Откуда появилась приставка WWW и что в этом плохого для начинающего вебмастера
Примерно десять лет назад World Wide Web (Всемирная паутина - то, что мы сейчас и считаем, собственно, интернетом) была лишь малой частью интернета, а сервера были очень слабенькими, поэтому приходилось размещать, например, сервер Apache на одном компьютере, почтовый сервер на другом, а сервер FTP на третьем. Имена серверов начинались с названия машин, на которых они располагались, и в зависимости от предоставляемого сервиса, выглядели так: www.domain.com, mail.domain.com, и ftp.domain.com (а так же совсем раритет - gopher.domain.com).
В настоящее же время приставка www является анахронизмом и должна была бы благополучно отмереть, однако, до сих пор существует масса каталогов, которые автоматически прибавляют к имени сайта вида domain.com пресловутое www. Так же существует немало пользователей, которые автоматически набирают в браузерах адрес сайта с www в начале (все же знают песню группы Ленинград). Поэтому www остается и создает очень интересную ситуацию. Получается, что www.domain.com и domain.com технически считаются полностью различными объектами, причем www.domain.com является родственным домену третьего уровня вида sub.domain.com. Но при этом же, обычно, www.domain.com и domain.com ведут (или должны вести) на одну и туже страницу (в отличии от субдомена sub.domain.com), т.е. получается, что каждый только псевдоним для другого (алиас или же по англицки alias).
Конечно же, можно все это пропустить и не забивать голову, но если вы всерьез заботитесь о продвижении вашего сайта в поисковых системах, то это может быть серьезной помехой у вас на пути. Смотрите сами что получается. Многие поисковики воспримут domain.com и www.domain.com как разные сайты, со всеми вытекающими отсюда последствиями. А именно - все внешние ссылки на ваш сайт будут делится на две части, в зависимости от того, в каком виде на вас проставили ссылку (с www или же без него). Получается, что вы лишаетесь части внешних ссылок на ваш сайт, а это, соответственно приводит к понижению сайта в рейтинге поисковиков, и пользователей с них к вам будет приходить меньше, чем могло бы. Кроме этого еще нужно учитывать то что серьезные поисковики (Google, например) борются за уникальный контент и не индексируют страницы (и даже сайты целиком) двойники, что черевато для нашей ситуации. Поясню.
Допустим, что домен domain.com стал популярным и на него много ссылаются, но, как на зло, при начальной индексации сайта поисковик нашел первым домен www.domain.com и теперь получается, что domain.com стал двойником (не имеет уникального содержания) и с большой долей вероятности он выпадает из рейтинга. Печально, не правда ли? Теперь поговорим о том, как этого избежать. Кто-то очень умный придумал способ как переадресовать один псевдоним к другому, который по существу является переадресацией к самому себе. Способ это называется Редирект и существует несколько вариантов его реализации на разных серверах. Я приведу здесь самый простой на мой взгляд способ, с использование файла .htaccess.
Редирект 301: с WWW на без WWW и наоборот
Файл .htaccess нужно создать в корневом каталоге сайта или открыть на редактирование, если он уже имеется. Этот файл является скрытым и поэтому, чтобы его увидеть нужно зайти в корневую папку вашего сайта на сервере (Как настроить доступ к сайту по FTP с помощью программы FileZilla) и в верхнем меню программы FileZilla выбрать пункт "Сервер" - "Принудительно отображать скрытые файлы".

Итак, открываем этот файл обычным текстовым редактором, можно к примеру в Notepad++, и дописываем следующие строки для варианта редиректа с www на без www:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.vash_sait\.ru$ [NC]
RewriteRule ^(.*)$ http://vash_sait.ru/$1 [R=301,L]
Вариант редиректа с без WWW на WWW:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^vash_sait\.ru$ [NC]
RewriteRule ^(.*)$ http://www.vash_sait.ru/$1 [R=301,L]
Не забывайте про обратную наклонную черту перед точкой (.) в строке RewriteCond - она обязательна. Вы можете так же ознакомиться и с другими вариантами 301 редиректа на . При 301 редиректе Google должен объединять PR сайтов. Теперь, кстати, ваш сайт будет доступен и по доменному с www, так и без www, но в адресной строке вас будет перебрасывать на то имя, на которое вы настроили редирект. Этот способ назвывается "перенаправление с шаблоном". В результате получается следующее: если набрать в адресной строке, например, http://www.ktonanovenkogo.ru/karta-sajta, то пользователь будет автоматически перемещен на ту же страницу, только без www – http://ktonanovenkogo.ru/karta-sajta.
Директива Host, позволяющая задать главное зеркало сайта для Яндекса
Для Яндекса дополнительно надо определить какое зеркало сайта является главным, с помощью директивы 'Host' в файле Robots.txt. Он также, как и файл .htaccess находится в коневом каталоге вашего сайта (если его там не окажется, то вам нужно будет его создать у себя на компьютере, в любом текстовом редакторе, а затем закинуть в корень сайта по FTP). Код добавляемый в Robots.txt должен выглядеть следующим образом:
User-agent: Yandex Disallow: Host: ktonanovenkogo.ru
Лучше будет вынести директиву 'Host' в отдельную секцию, предназначенную только для робота Яндекса (User-agent: Yandex), т.к. возможно, что другие поисковики (Google, например) могут некорректно отработать непонятную им директиву. Так же по стандартам файла robots.txt в каждой секции 'User-agent' должна присутствовать хотя бы одна директива 'Disallow', поэтому мы и поставили в коде пустую, ничего не запрещающую директиву Disallow:. Мой файл Robots.txt, после добавления приведенного выше кода, стал выглядеть так:
User-agent: * Disallow: User-agent: Yandex Disallow: Host: ktonanovenkogo.ru Sitemap: http://ktonanovenkogo.ru/sitemap.xml.gz Sitemap: http://ktonanovenkogo.ru/sitemap.xml
Более подробно о создании файла robots.txt вы можете прочитать в этой статье: Улучшаем индексацию сайта поисковиками - Robots.txt для Joomla, SMF, WordPress
301 редирект с одного домена на другое доменное имя
У меня, кстати, возникла еще одна необходимость воспользоваться 301 редиректом. Дело в том, что некоторые мои сайты базируются на бесплатном хостинге (Oxnull.net — на мой взгляд лучший бесплатный хостинг), который при регистрации предоставляет бесплатное доменное имя третьего уровня. Но я практически сразу покупал для сайтов доменные имена второго уровня, которые затем успешно прикручивал к своим сайтам. Проблема была в том, что сайты оставались доступны и по старым бесплатным доменам третьего уровня (например, gurhan.oxnull.net). Вот для разрешения такой ситуации, я так же прописал в файле .htaccess следующий код:
RewriteEngine On
RewriteCond %{HTTP_HOST} gurhan.oxnull.net
RewriteRule (.*) http://caokun.ru/$1 [R=301,L]
Теперь если в браузере набрать http://gurhan.oxnull.net, то произойдет автоматический переброс на сайт http://caokun.ru.
Вы так же можете ознакомиться с другими статьями на эту же тему:
- Доменное имя и хостинг для вашего будущего сайта
- Как получить доступ к сайту по FTP с помощью программы FileZilla
- Улучшаем индексацию сайта поисковиками с помощью настройки файла robots.txt и мета-тега Robots
- Домены с www и без www — история появления, использование 301 редиректа для их склеивания
- Как сделать резервную копию файлов и базы данных вашего сайта
- Как перенести ваш сайта на другой хостинг с помощью программ FileZilla и phpMyAdmin
- Денвер (Denwer) — установка, настройка, работа с сайтом и базой данных на локальном сервере, перенос сайта на хостинг
На сегодня все. Если вы не хотите пропустить появление новых материалов на этом сайте, то можете подписаться на рассылку новостной ленты через форму, расположенную чуть ниже, или же выбрать удобный для вас способ подписки на странице Подписка. Если у вас остались нерешенные вопросы из области вебмастеринга, то вы можете поискать на них ответы, посетив страницу Вопросы и ответы.
Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru















Спасибо огромное – ваша статья очень помогла!!! =)
Я на первых парах пробовал сделать редирект, но после этого сайт вовсе не отображался, как с приставкой, так и без, поэтому вернул пустой .htaccess. Наверное я что-то делал не так и сейчас смогу разобраться. Быть может поможет, спасибо!
Полезная статья – надо будет обязательно сделать на своем блоге.
Хотя вот проблемка – делал этот редирект на одном своем проекте изаметил что онс стал после этого хуже индексироваться – убрал все вернулось обратно. может из за того что в robots.txt не указал для яндекса хост?
Игорь, если получилось так, что вы выбрали в виде главного зеркала не тот вариант, что выбрал Яндекс, а в роботе для Яндекса это явно не указали, то в этой ситуации может быть вообще прекращение индексации вашего сайта Яндексом. Его робота будет перекидывать с основного для Яндекса зеркала на второстепенное, которое он, по алгоритму его работы, индексировать не будет. =)
Спасиба! =)
Скажите а куда именно вставлять этот код? в конец, в начало или между какимто кодом?
# -FrontPage-
# BEGIN WPSuperCache
# END WPSuperCache
# BEGIN WordPress
# END WordPress
Nikita: в принципе, не так важно в каком месте файла .htaccess будет прописан данный код. Я его, например, вообще добавил внутрь правила, которое прописал плагин защины фото от воровства:
# BEGIN WordPress <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.ktonanovenkogo\.ru$ [NC] RewriteRule ^(.*)$ http://ktonanovenkogo.ru/$1 [R=301,L] RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !http://ktonanovenkogo.ru RewriteRule (wp-content/uploads.*\.(gif|jpg|jpeg|png)$) http://ktonanovenkogo.ru/wp-content/plugins/hotlink-protection/forbid.png [L] RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>Здравствуйте!
Спасибо за полезную статью. Сам недавно сделал 301 редирект, только не между с www и без www, а со старого доменного имени на новое. Однако я не стал прописывать в robots новый домен, потому что считал, что робот Яндекса файл robots на старом домене никогда не прочитает из-за того, что всегда будет перекидываться на robots, лежащий по новому адресу. Как Вы считаете, прав ли я? Сейчас страницы с нового домена постепенно попадают в индекс Яндекса, старые выходят из него. Вот только позиции новых страниц далеко не такие, как старых.
Немного н по теме вопрос, но раз уж тут лазили в .htaacesshttp://www.victoryinvestors.com
У меня такой вопрос: у меня на сайте иногда появляется ошибка в которой пишется, что нет доступа к файлу refresh_informers.php и в тоже время пропадает возможность изменять все файлы в вордпресе через админку. хотя доступ стоит 7.
сайт
Денис: мне пока вплотную не приходилось заниматься переносом сайта на другой домен с сохранением пузомерок. Есть неплохой материал по этой теме у Димокса (знаете, наверное). Он это на своем опыте проверил и написал цикл статей. Вот ссылка на результирующую статью –http://dimox.name/speed-comparison-of-domains-splicing-by-yandex/
Все это я прочитал, но т.к. на практике не применял, то оно не отложилось, что именно и как лучше будет сделать. Почитайте сами, там вроде все доступно и понятно описано =)
Nikita: к сожалению, ничего путного не могу сказать по вашему вопросу, странная ситуация, на мой взгляд. =-O
Здравствуйте.
Спасибо за полезную статью.Извините что отвлекаю и трачу ваше время на такую мелочь но все же не могли бы прописать полный путь к файлу htaccess на пример ваш путь к этому файлу
Денис: он лежит в корне сайта. У меня путь получается такой:
Если вы его не видите, то в FileZila нужно в верхнем меню выбрать пункт “Сервер” – “Принудительно отображать скрытые файлы”.
Про работу с файлами сайта по FTP можете почитать здесь: Как получить доступ к сайту по FTP с помощью программы FileZilla
В корне, где index.html или index.php и т.д.
Спасибо вам Дмитрий второй раз к вам обращаюсь и оба раза вы мне помогали.
Успехов вам
Дмитрий, спасибо за ссылку на статью Димокса. Почитал, интересно.
Отличная статья, вмиг все удолось поправить и теперь все отлично работает.
httpacces, FreeBSD, Postfix, SQUID, NAT, Firewall, все это я изучаю вторую неделю, вродебы результаты уже не плохие, желаю вам успехов, А ваша статья мне очень помогла.
Здравствуйте, спасибо за статью. Но у меня этот редирект работает таким образом, что сhttp://www.домен.ru/папка перекидывает на домен.ru, а не на домен.ru/папка. В этом, вероятно, виноваты настройки сервера?
Спасибо за отличный цикл статей!
У меня вопрос такой. Имеет ли принципиальное значение, какой редирект прописывать в .htaccess: с домена с www на домен без www или же наоборот? И зависит ли это от того, какой Host прописан в robots.txt: опять же – с www или без www? Надеюсь, понятно изложил вопрос )) Спасибо заранее!
Святослав: какое именно зеркало вы выберете главным не важно (с WWW или без WWW), но именно на это зеркало должен быть сделан редирект и именно оно должно быть прописано в Host. Иначе могут возникнуть проблемы с индексацией сайта Яндексом.
Главное зеркало в директиве Host вы укажете, допустим без WWW, а редирект сделаете на зеркало с WWW. В этом случае при заходе на ваш сайт робота Яндекса будет перебрасывать на не главное зеркало (с WWW), которое Яндекс индексировать не будет (т.к. в Host оно не прописано главным). Индексация сайта в этом случае вообще Яндексом осуществляться не будет.
Огромное спасибо, Дмитрий!
Спасибо за инфу, у меня вопрос если я сделал основным имя без www а Гогл индексировал сайт с www как будет развиватся ситуация? И что лутьше сделать если яша видит без ввв а гогл с ввв.
Костя: чего то, как то запутано получается. Боюсь сам запутаться и вас запутать. Надо просто думать логически, какой вариант будет работать, а какой приведет к проблемам с индексацией вашего сайта одним из поисковиков.
Спасибо. Наконец-то разобрался с этим 301 редиректом.
Здравствуйте! Блог – шикарный, за что Вам большое спасибо!http://vij.имя-сайта/$1 [R=301,L]http://www.имя-сайта.ru , меня перебрасывает на http://www.имя-сайта.ru/
Есть вопрос на счёт редиректа, прочитал – всё понял и добавил код в .htacces.txt
########## Редирект с www на без www
#
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.имя-сайта\.ru$ [NC]
RewriteRule ^(.*)$
#
##########
но если я ввожу в адресной строке
то есть редирект не работает, в чём может быть причина?
Виктор говорит, что:
вроде как, ошибочка у вас – вместо “http://” у вас написано “vij.”. Может из-за этого. Во-вторых файл должен называться не “.htacces.txt”, a “.htacces” (без расширения). Так же возможно, что ваш хостер не поддерживает конфигурирование сайта с помощью файла “.htacces”
Извиняюсь это я здесь написал не внимательно, а как исправить не нашел.
файл конечно .htaccess (не txt)
вот точный код, что я вставил в него:
########## Редирект с www на без wwwhttp://vij.ru/$1 [R=301,L]
#
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.vij\.ru$ [NC]
RewriteRule ^(.*)$
#
##########
вроде все верно, но редиректа не происходит, запрос с www – открывает сайт с www, запрос без www – соответственно без..
хостер поддерживает .htaccess (узнавал, говорят все должно работать)
Виктор говорит, что:
вот опять, “http://” там есть, просто визуальный ред. его в ссылку превратил
Ура! работает )
похоже эти решетки “#” не просто так, я думал они просто строки комментируют, вставил код без них (и в самом начале файла) и все сразу же стало нормально.
В общем сам дурак )извините за мусор, можете стереть все что я тут понаписал.
Вот вопрос: если склеить забаненый домен яндексом к нормальному домену, какие последствия? будет ли бан перенесен на новый домен?
Юрий: нет такого опыта. Если сделаете, то сообщите обязательно о результатах (если не в лом).
Тогда этим и займусь, всегда любил экспериментировать…результаты извещу
Есть ещё один вопрос. Поставил редирект и host на главный домен. Нужно ли в яндекс вебмастере удалить неправильное главное зеркало с www? Или оно само изменится?
В тексте статьи находится ошибка: «соответственноЮ». Явно подразумевается «соответственно,».
Agor71: спасибо за замечание, поправил.
Помогите пожалуйста решить следующий вопрос: поменял доменное имя и CMS (контент не изменял), через 301 редирект получится ли сделать перенаправление со всех страниц старого доменного имени на например newdomain.ru? Или может посоветуете что нибудь другое, или ссылочку где можно почитать?
Заранее спасибо.
Подскажите, плиз, как определить, удачно или нет прошел редирект. на WP у меня редирект делает плагин, вот не знаю, есть ли смысл добавлять в .haccess строчки редиректа. Потому что при вводе ссылки с www он автоматом перебрасывает меня на сайт уже без www. Я так понимаю, это говорит об удачном редиректе. А вот 2 других сай
Извините, прошлый пост был не целиком. Так вот, я прописываю для сайтов на Джумле оба файлика, как указано у вас, но при вводе адреса с www и без www ничего не происходит, то есть url разные. Что делать и где копать?
Пожалуй остановлюсь на “без www”.
Спасибо за статью. Сейчас настрою редирект и себе, руководствуясь вашими указаниями.
Возник вопрос, если у меня есть бесплатный блог на домене третьего уровня, мне нужно редактировать его .htaccess чтобы делать редирект на свой сайт второго уровня?
Дело в том, что это бесплатный хостинг (третьего уровня) и его
.htaccess я редактировать не могу никак. Нет такой возможности.
Есть ли какой-либо другой способ?