Сайт с www или без www

Понимаю, что тема избита, но сам постоянно натыкаюсь на сайты, открывающиеся как с www, так и без.
Почему это плохо?
1) проблемы с поисковиками. Для поисковиков сайты с www и без www – 2 разных сайта. Это хорошо видно в Яндексе, который проиндексировал сайт wimax с www и без www. Такое дублирование понижает основной сайт в поисковой выдаче за счет «размытия» контента на 2 сайта.

индексация сайта с www и без www дублирование контента
На момент написания статьи я уже исправил ситуацию с wimax.
Сейчас в Яндексе висит только один основной сайт wimax.comstar.ru

Если вы откроете http://www.ekimoff.ru/, то вас автоматически перекинет на http://ekimoff.ru/ . Причем не просто перекинет, а через 301 http-заголовок. Это ключевой момент. Если поисковик натыкается на ссылку, которая перекидывает его через 301 редирект на другую страницу, то поисковик «сохраняет вес» от этой ссылки. Как делать 301-редирект смотри ниже.

2) проблемы с сессиями и куками. Приведу реальный пример из своей практики.
На сайте ****.ru есть голосование. Если сначала проголосовать на сайте http://www.****.ru , то можно повторно проголосовать на том же сайте без www http://****.ru. Это происходит потому, что для браузера сайты с www и без www – это 2 разных сайта. Соответственно, cookies тоже будут разными. Но база данных одна и получается что один человек может отправить 2 запроса на голосование (случайно или специально).

Или, например, пользователь залогинился на www.site.ru. Если он перейдет на site.ru, то там он окажется разлогиненным, т.к. сессионная кука будет уже другой.

Что делать?

Проблема решается двумя способами:
1) htaccess

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

Это означает, что если пользователь наберет http://site.ru то откроется http://site.ru
А если наберет http://www.site.ru то его незаметно перекинет на http://site.ru
Таким образом, старые ссылки с www останутся рабочими.
R=301 – это и есть тот самый 301-редирект.

2) через PHP (прямо внутри скрипта)

<?php
header(“HTTP/1.1 301 Moved Permanently”); // отсылаем заголовок
header(“Location: http://site.ru/newpage/”); // и тут же перекидываем куда надо
exit();
?>

Неважно как делать с www или без www – но выбрать нужно только один путь. Я предпочитаю делать сайты без www.

#1

С www хорошо делать тем, что когда ссылку на твой сайт выкладывают на форуме каком-нить простым текстом (без bb-кода или тега) то парсер может не скушать ссылку без www

PS: на lighttpd так работает

$HTTP["host"] =~ "^example\.com$" {
url.redirect = ( "^/(.*)" => "http://www.example.com/$1" )
}

Сергей, 5.08.2009 - 20:04
#2

префикс www - это анахронизм
от него нужно избавляться.

fly, 6.08.2009 - 13:04
#3

"2) проблемы с сессиями и куками." это не проблема, просто надо правильно кукисы ставить, с доменом. Тогда будет работать и с ввв и без. А про голосование, то можно сколько угодно раз голосовать, так как в любом браузере есть функция очисти кукисов. Так что надо привязываться к более уникальной информации, допустим remote-addr и x-forwaded-for учитывать если прокся (тут уже как душа ляжет).

Наffanya, 2.10.2009 - 18:49
#4

Наffanya, согласен. Но, как показывает опыт, обычно все про это забывают.

admin, 2.10.2009 - 20:12
#5

Спасибо за информацию! Не знал о важности этого вопроса..

В файл .htaccess нужно добавлять правила после строки RewriteEngine On. Иначе у меня не работал редирект!

style.ilya, 26.05.2010 - 12:01
#6

спасиб за информацию, седня же применю на практике

Sancho, 28.09.2010 - 08:15
#7

Будет ли давать вес ссылка с www на сайт без www?

filat, 13.12.2011 - 22:27
#8

Здраствуйте, подскажите пожалуйста, у меня сайт открывается как с www так и без www, это ошибка?

Sonic, 21.12.2013 - 17:55
#9

нет, для пользователя сайта это не ошибка.
это ошибка для поисковых систем типа Яндекса.

admin, 26.12.2013 - 18:01
#10

Спасибо.

Sonic, 28.12.2013 - 11:53
Оставить комментарий