Я бы изменил мир!
Но Бог не дает мне исходники!
где мне их скачать то?

 
3mind.ru » Программирование » Редирект с www

Редирект с www

Автор: nikba от 14-07-2011, 08:54
 (голосов: 1)
Для поисковых систем домены http://www.3mind.ru и http://3mind.ru не одинаковые. Это может негативно сказаться для поискового продвижения сайта. Например, ссылки, которые поставлены для домена без www уже не будут считаться для домена с www.

Во многих популярных сайтах при открытие сайта с www автоматически происходит редирект на домен без www. В этой статье я покажу, как это можно сделать при помощи php. Можно было бы использовать для этой файл .htaccess если на сервере включен модуль апача – mod_rewrite. Но мой способ не хуже и мы не зависим в этой случае от модуля mod_rewrite, который не на всех серверах может быть включенным.

Для этого нам понадобятся следующие php переменные:

$_SERVER['HTTP_HOST'] – в этой переменной содержится наш домен.
$_SERVER['REQUEST_URI'] – в этой переменой содержится путь, от корня сайта включая и get параметры если такие имеются в адресе.

Итак, вначале главной страницы сайта. Как правило, это файл index.php вставить следующий код:

if(strpos($_SERVER['HTTP_HOST'], 'www.') === false) {
// ничего не делаем
}
else {
$_HOST=str_replace('www.', '', $_SERVER['HTTP_HOST']);
header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://".$_HOST.$_SERVER['REQUEST_URI']);
}


Если мы открываем сайт делаем проверку, есть ли в переменной $_SERVER['HTTP_HOST']); вначале .www и если нету, тогда ничего не делаем, так как пользователь открыл домен без .www.

if(strpos($_SERVER['HTTP_HOST'], 'www.') === false) {
// ничего не делаем


Если $_SERVER['HTTP_HOST'] содержит .www, значит, пользователь открыл домен с www. То есть как домен третьего уровня. Поэтому делаем перенаправление. Первое, что делаем, посылаем заголовок – ‘HTTP/1.1 301 Moved Permanently’, что означает, что старый адрес навсегда перемещен на новый. Затем следующей строчкой делаем редирект используя переменные $_SERVER['HTTP_HOST'] и $_HOST (это $_SERVER['REQUEST_URI'] в которой убрали .www)

header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://".$_HOST.$_SERVER['REQUEST_URI']);
Netexchange.ru
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий
  • Группа: Посетители
  • ICQ: --
  • Регистрация: 14.07.2011
  • Комментариев: 2
  • Публикаций: 0
^
Можно и через .htaccess прописать например. Для сайтов с www нужно прописать вот что

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\.3mind\.ru [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Веб-мастер (англ. webmaster) — человек, профессионально или в качестве хобби занимающийся разработкой веб-сайтов в Интернете или корпоративных приложений в интранете.