Не так давно мы обратили внимание на то, что наш сайт размножился в поисковой выдаче. Домен без www живет отдельно от домена с www, то же самое касается и ip-адреса, и зеркал сайта. Эту проблему мы решили указав в robots.txt следующее:
Host: www.example.com
После этого из поисковой выдачи пропали наш ip-адрес и сайты-зеркала. Осталось только основное зеркало ― www.ibice.ru. Но как же перенаправить на главное зеркало посетителей, которые переходят по ссылкам без www (не из поисковых систем)? На сайте yes-www.org есть код для .htaccess, который перенаправляет все запросы с домена без www на домен с www.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Если у Вас это сработает, то Вам повезло, потому как на нашем сервере ни этот, ни подобные коды не желали действовать ни в какую. Пока Геворг разбирается почему это не работает, я накатал небольшой код на PHP, который выполнял бы ту же функцию.
<?php
$httpHost = $_SERVER['HTTP_HOST'];
if($httpHost == "example.com"){
header("Location: http://www.example.com".$_SERVER['REQUEST_URI'],true,301);
}
?>
Этот фрагмент нужно вставить в скрипты сайта таким образом, чтобы он был выше какого-либо другого кода. В IWE его можно вставить в любом месте в конфигурационный файл. Прекрасно работает уже почти неделю. Единственный минус ― работает только для PHP-скриптов (т.е. при обращении к картинкам или текстовым документам перенаправление не происходит). Но у нас-то на сайте картинки ботам индексировать запрещено, а из текстовых файлов ― только robots.txt. На первое время сойдет, а потом может и Геворг чего нашаманит.