Закрываем зеркало сайта от индексации правильно

  • Tutorial
Здравствуй, %habrauser%.
Сегодня я покажу как не надо закрывать от индексации зеркало сайта, и как закрыть его правильно.

Предыстория

Я работаю web-мастером в одной крупной для нашего города компании.
Мы сделали клиенту сайт, для рекламирования и продажи своей продукции.
Клиент выбрал доменное имя в зоне .RU, и сайт около года успешно работал. Сайт по настоящее время обслуживается и редактируется по мере необходимости у нас.
Через какое-то время клиент захотел второй домен для сайта, но в зоне .РФ.
Он самостоятельно нашёл «профессиональных seo-специалистов продвигальщиков», сайт которых стоял на первом месте в выдаче Яндекса по определенным запросам.
С ними он заключил договор, и ежемесячно отгружал немалую сумму денег в эту seo-конторку.
Спустя пару недель сеошники наконец проснулись, связались с нами и получили ftp доступы к сайту, а так же пароль от админки сайта.

Началась «оптимизация»

Всё началось с того, что они не разобрались в движке сайта PHPShop.
Отправили нам письмо, мы им сообщили где что редактируется, в каком файле находятся нужные им теги, а так же в довесок дали немного ссылок на официальную документацию.

Сам сайт устроен так, что скелет вёрстки главной страницы находится в файле index.tpl, а html-скелет остальных внутренних страниц находится в файле shop.tpl. Сам же контент находится в базе данных и редактируется через админку с помощью визуального редактора, либо в виде source html.

Сеошники поправили верстку как им было необходимо, но на главной странице они захотели воткнуть свой копирайт-рекламу.
В договоре, кстати, указано что убирать эту индексируемую ссылку на их сайт нельзя.

Горе-оптимизаторы так и не разобравшись в элементарной админке, напичкали сайт своими скриптами костылями, которые мешали нормальной работе фреймворка и шли в разрез со здравым смыслом. Самое безобидное — сделали статичную версию главной, и положили этот статичный index.html рядом с index.php.

Далее, через свои скрипты, сделали переадресацию с index.php на index.html
Зачем? Закрывая глаза на то, что всё редактируется через админку, можно же через htaccess и mod_rewrite сделать такую переадресацию на уровне веб-сервера написав несколько строк, и не подключать mod_php для вывода 301 заголовка...

Выяснился этот сюрприз оставленный сеошниками через месяц, когда клиент захотел поменять на главной информацию, и обратился к нам.

Я всё делаю по т.з., сохраняю, и начинаю медленно сходить с ума.
Полез в базу — информация новая. Полез ковыряться в движке, и дебаг показывает что информация выдаётся правильно. Захожу по ftp, и нахожу 4 незнакомых скрипта в корне сайта, в названии которых есть наименование seo-компании.

Около часа ковырялся в их коде. К слову, php код их скриптов удостоен почетного места на ресурсе govnokod.ru

Поправляю за ними косяк, переношу проделанную ими работу из статичного index.html в базу данных движка.

«Нам сюрпризов не жалко»

Еще через пару недель выясняется новый косяк. Именно тот, о котором данный тред.

Клиент звонит и злостно говорит что мы опять что-то натворили на сайте, и ничего не работает. Мы в недоумении начинаем опять разбираться в проблеме.

Заходим на главную страницу зеркала в зоне РФ, и видим ошибку 404.
Снова начинаем немного удивляться умению добавить людям работы на ровном месте, и задаваться вопросом «как?».
Заходим на основной домен в зоне.ру (они его и продвигают) — всё нормально.
Опять лезу ковыряться в коде горе-оптимизаторов.

И… Нахожу следующий код:
Доменные имена специально не раскрываю, а так же умолчу какая именно seo компания так извращается

if($_SERVER['HTTP_HOST']!='domain.ru'&&$_SERVER['HTTP_HOST']!='www.domain.ru') {
$page=file_get_contents_curl('http://domain.ru/hjgjgjhgjh');
$page=iconv('utf-8','windows-1251',$page);
header('HTTP/1.1 404 Not Found',true,404);
$page=str_replace('<head>','<head><base href="http://domain.ru/">',$page);
echo $page;
echo 'not found';
exit();
}


facepalm.jpg

Как мы видим, они не захотели что бы зеркало попадало в индекс Яндекса, и сделали зверский костыль.

Сношу их индусский код, и делаю следующее:

Создаю файл robots.php, и пишу туда следующее:
<?php

header("Content-type: text/plain"); // отправляем заголовок, который указывает что обрабатываться должно как простой текст
if(strpos($_SERVER['HTTP_HOST'], 'domain.ru') === false) { // если хост не равен основному домену, то:
	echo "User-agent: *\nDisallow: /\nHost: domain.ru"; // выводит что индексация запрещена, и основной сайт находится по другому адресу
} else { // если хост равен domain.ru, то выводится то что нам нужно
	
?>
User-agent: Yandex
Disallow: /gbook/ID
Disallow: /search/
Disallow: /highslide/
Disallow: /java/
Disallow: /license/
Disallow: /pageHTML/
Disallow: /tagcloud/
Disallow: /data/
Disallow: /capcha/
Disallow: /pages/
Host: domain.ru

User-Agent: Slurp
Disallow: /

User-agent: * 
Disallow: /gbook/ID
Disallow: */*.swf
Disallow: /search/
Disallow: /highslide/
Disallow: /java/
Disallow: /license/
Disallow: /pageHTML/
Disallow: /tagcloud/
Disallow: /webstat/
Disallow: /data/
Disallow: /capcha/
Disallow: /pages/

Sitemap: http://domain.ru/sitemap.xml

<?php } ?>


Пол дела сделано, теперь удаляем robots.txt, и в файл .htaccess добавляем такие строки (обязательное условие apache+mod_rewrite):
RewriteEngine On
RewriteRule ^robots.txt$ robots.php


UPD: конвертированное правило для nginx Лично не проверял, но должно работать.
Если что напишите в коммент — поправлю

location = /robots.txt {
  rewrite ^(.*)$ /robots.php;
}


Всё! Когда роботы запрашивает robots.txt, сервер отдаёт им файл robots.php

P.S. Надеюсь если кто-то использует подобные кривые способы закрытия зеркала, добавит это к себе в «копилку» скриптов для оптимизации.

P.P.S. Так уж сложилось, что в настоящее время профессиональных seo компаний очень мало, и получается вечное противостояние «сеошники VS разработчики», одни делают сайт, другие ломают его функциональность за счёт кривых рук и непонимания.

P.P.P.S. Если кому то интересно, всё таки могу указать ссылочку на ту seo-конторку

Спасибо за внимание!

UPD: Не в целях антирекламы, а в целях предосторожности: demis.ru — сеошники-герои данного треда.

UPD: Очередной случай. Полезли что-то делать, поехала вёрстка. Уже надоело за свой счёт и время поправлять их косяки
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 37

    0
    У вашего способа есть один недостаток: у меня есть продвигаемый клиентский сайт, на котором robots.txt не запрашивался Яндексом уже месяца 4…
      +12
        +1
        В данной статье больше указывается как делать не надо, и один из многих способов как сделать правильно.

        Люди заходившие на домен-зеркало видели 404, информацию о том что страница не существует и закрывали вкладку. И о какой целевой аудитории после такого тут может идти речь?
        +5
        Ахаха) Не так давно тоже бился с криво руками сеошниками. Дополню ваш рассказ еще одним идиотизмом. Вся информация на том сайте находилась в БД + есть удобная админка для этого. Так они в файле шаблона «шапки» для всех страниц сайта сделали огромный php массив с залоговками всех страниц, и по урлу страницы выдавали нужным им title. Где-то так: $title['product/525'] = 'Товар 525 | компания рога и копыта'];
          +1
          Криворукими, сорри, это айпад исправил.
            +4
            Оригинально. Надо отменить, что способ дешевый, быстрый и практичный :)
            Избавляет от разбирательств с различными CMS.
              +3
              Еще раз убеждаюсь, что сеошник должен работать в паре с программистом, чтобы не изобретать подобных велосипедов. Сам сталкивался с подобными перлами. Хотя в боевой обстановке совсем не до смеха…
                +2
                а я еще раз убеждаюсь что всё меньше сеошников работающих на качество, а не на количество клиентов, которые долго не держутся.

                Если делать качественно — то будут и рекомендации, и люди еще вернутся, и меньше гемора себе в дальнейшем, и другим людям работающим после сеошников.
                  +3
                  Нормальный продвигатор просто попросит контакты программиста и объяснит суть задачи. Пусть каждый занимается своим делом.

                  По поводу доступов к ftp: многие разработчики подстраховываются (и правильно!) и в договоре указывают: берете доступ — гарантии слетают.
                    +3
                    Можно более мягко. Не совпадают скрипты/бинарники с образцом/репом, диффы что-то показывают — негарантийный случай. С репами вообще удобно — сразу видно где что меняли. Если только хостинг клиентский, то архив туда залить с исходниками.
            0
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $somesite.ru;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass some_ip_there:81;
              +1
              proxy_set_header Host somesite.ru;
              то есть.
              +4
              Так о ком всё-таки речь? :)
                +7
                > Создаю файл robots.php, и пишу туда следующее

                А это конечно не индусский код, комбоджийский наверное :)

                Правильным решением и с точки зрения посетителей и с точки зрения продвижения, здесь было бы сделать переадресацию с.рф домена на основной .ru домен, приемущества:

                1. Все посетители попадают на сайт с одним и тем же .ru адресом, даже если набрали.рф адрес в браузере. Организация или магазин у которого два разных названия это не хорошо.

                2. Поисковики однозначно понимают, что сайт один и находится он на .ru домене.

                Сеошники однозначно не правы, правильным вариантом было бы привлечь вашу студию для внесения изменений, если уж сами не могут разобраться.
                  +6
                  Вот-вот. Для чего городить еще один костыль — robots.php, если можно поставить 301 редирект средствами сервера. А в корень сайта положить обычный robots.txt, где прописать Host: domain.ru. Таким способом произойдет также передача PR и ТИЦ, если, конечно, эти показатели ненулевые на домене.РФ
                    –1
                    301 первый редирект не подходит. Клиент хочет что бы к сайту было прикреплено было 2 домена, и оба были доступны. Что бы люди лазили и по ru и по рф.
                      +2
                      Что значит к сайту прикреплено? Домены в любом случае будут привязаны к серверу клиента. Просто сервер при обращении по домену РФ будет заменять кириллический домен на латинский. Клиенты сейчас есть такие, которые не знают даже, что такое адресная строка, не говоря уже о том, что они будут обращать внимание на неё. Так что сдается мне или вы выдумали про желание клиента, или не смогли доходчиво объяснить, что зоопарк из отделенных друг от друга алиасов держать нехорошо. У нас есть клиенты, у которых и по 7-8 доменов (в виде номера телефона, ловушки опечаток, с дефисом и без и т.д.) и все они редиректятся на один главный.
                        0
                        задача такова, что он не хочет что бы редиректилось. хочет что бы было именно 2 домена, но один сайт. и что бы можно было без редиректор лазить и по domain.ru и по домен.рф
                    +1
                    Привлечь студию — за это, им возможно, деньги придется платить, студия может не согласиться делать для них работу бесплатно.
                      +1
                      Студия не должна это делать бесплатно, а у сеошников в бюджет в любом случае должны быть заложенны необходимые правки сайта, не зависимо от того, кто их будет делать.
                      0
                      Полную переадресацию с 301 редиректом делать не айс, т.к. это яндексу запудрит мозги, он не сможет добраться до robots.txt и правильно поклеить новый домен со старым. Поэтому лучше на все страницы кроме /robots.txt ставить 301 редирект на старый домен, а /robots.txt отдавать без редиректов, со строкой
                      Host: domain.ru
                      +1
                      Угадай SEO-конторку по их действиям. Кто сталкивался, тот сразу поймет о ком речь.
                        +1
                        Сразу догадался про кого речь. Мой знакомый «почтиклиент» доверился этим монстрам, в результате сайт под фильтром, знакомый этот рвет волосы на голове, судиться — время терять, исправлять — аналогично. Ну и деньги потеряны естественно.
                          +2
                          Очень похоже на «Демис», сталкивался с ними — в статье описан их стиль работы до мелочей.

                          Больше всего запомнилось, как они почти три недели убеждали клиента, что навигационное меню «на джаваскрипте» — это «плохо для оптимизации». Меня просили прокомментировать их рекомендации и я неоднократно обращал внимание, что это меню сделано на чистом css и js там не используется вообще. Они на эти замечания реагировали одинаково — «там есть javascript, это плохо».

                          Не буду утомлять другими подобными историями, но у меня сложилось стойкое впечатление, что там работают специалисты крайне невысокой квалификации.
                          +1
                          Мы с одной конторой прекратили договор, они отключили нам хостинг оригинальным методом — грохнули все днс записи. Легла почта, лег доступ к 1с по доменному имени, легли сайты естесственно. Не поленились 3 января всё напакостить.
                            +3
                            Надеюсь затребуете с них много денег через суд
                              0
                              А смысл? ну не работала почта 3 дня с 3 января да и черт с ними, доступ к 1с дал по прямому ip, сайты поднял, МХ записи обновил по памяти, все всё равно бухали в праздники. Осадок остался от такого отношения, балбесы лупили по 30к руб /мес за 2 вордпресс сайта, хорошо успел до нг бекапы сделать, заглянул внутрь ужаснулся, вордпресс не обновляли, плагины не обновляли, бекап на скл баз не было. Такие вот в НН потрясающие порно-студии.
                                0
                                Стал сомневаться что это были они.
                                5 января взял у хостинг-центра хостинг для переезда, мне по мозгам ездили-ездили и дали только 10 января, сегодня, сбросив опять все днс записи. Я высрал кирпичей на домик.
                                Вот думаю в первый раз не они ли мне доброе дело 3 января сделали.
                                Сил моих нет, все умнее меня днс мои же крутить.
                                  0
                                  Ну и на них в суд тоже можно :)
                              +2
                              Автору (да и другим, наверное, тоже): если все косяки объективны (то есть не выдуманы в качестве примера), то почему бы не написать название SEO компании? Страна должна знать своих героев :)
                              Или бить врага его же оружием:
                              Худшее SEO от компании %companyname% и завернуть в ссылку
                                +1
                                Тогда в блог «Я негодую» нужно будет перейти.
                                К тому же, если контора серьезная, может в суд подать, нужно будет доказательства предъявлять.
                                –5
                                Пост из серии «я у мамы молодец». Может, не стоит уже сюда такие помои лить?
                                  +1
                                  На вашем месте я бы выложил название SEOшников. Обычно перед началом работе смотрят отзывы, а тут такое)
                                    0
                                    мм… а это зачем?

                                    User-Agent: Slurp
                                    Disallow: /

                                      0
                                      robots.txt оставил тот, который делали сеошники эти.
                                      я сделал лишь корректное отображение того, чего они хотели добиться
                                      0
                                      Я уже запарился с этими горе оптимизаторами, наделают финтов, а потом народ жалуется в поддержку и с первого раза и не понятно в чем проблема. В статье речь идет про мой велосипед, у меня давно руки чешутся на них в суд подать, переодически ругаю, но видно у них текучка кадров, забывают мои наставления. Если что, пишите в личку — помогу чем смогу.
                                        0
                                        Есть еще одно элегантное решение без создания robots.php

                                        RewriteRule ^robots.txt$ robots.txt.%{HTTP_HOST} #направляем на разных доменах на разные файлы robots.txt
                                        


                                        Соответственно в в корне сайта кладем два файла robots, для каждого домена и прописываем там свои независимые правила.
                                        Способ удобен тем, что горе-оптимизаторы не набыдлокодят своей логики. Только прежде нужно предупредить их о том что для каждого домена запрашивается свой роботс.

                                        Only users with full accounts can post comments. Log in, please.