Программирование, СМС, Webasyst, Drupal, PHP, личная эффективность

 
 

Редирект с www

Август 10, 2010   |   Категории: php, seo, веб мастерим

Для поисковых систем домены http://www.example.com и http://example.com не одинаковые. Это может негативно сказаться для поискового продвижения сайта. Например, ссылки, которые поставлены для домена без 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']);


 
 

2 Комментариев

Fucktor  on Август 19th, 2010

Можно и через .htaccess прописать например. Для сайтов с www нужно прописать вот что

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

jobgomel  on Сентябрь 9th, 2010

Да, но в вашем варианте через .htaccess мы наоборот принудительно присваиваем www, а мы хотели избваться

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




 

 
 

На сайте freesoftspace.com можно найти много полезных бесплатных программ для веб разработки

 
 


38201110912430120x600.gif
Каталог блогов
2009-2012   При копировании материала активная ссылка на web-grand.ru обязательна