Кэш Яндекса, статистика LI и финт ушами
30 Август 2011 Автор: admin
Привет. Пишу редко – времени совсем мало. А может просто лень-матушка
Хочу рассказать о ситуации, произошедшей на днях. Пусть это не «тема», но возможно кому-то будет полезно.
Есть у меня музыкальный сайт, с поиска идет порядка 1k посетителей в день. И вот, в очередной раз просматривая статистику LiveInternet и проверяя единичные запросы с удивлением обнаруживаю, что по одному из них Яндекс предлагает пользователю перейти на файл *.txt в одной из служебных директорий сайта. Надо сказать, что в robots.txt эта дира не была закрыта от ПСов, но и ссылок на нее нигде не было и не могло быть! Там лежат 2-3 txt-файлика, куда пишутся логи и запросы посетителей. А поскольку сайт музыкальный, то в один из файлов попадали названия треков и исполнителей. Вот эту сборную солянку и раскопал Яндекс, с удовольствием скушал и вываливал в результаты поиска по низкочастотным кеям. Причем, перейдя по этой ссылке, пользователь получал файл в 25 мегабайт, абсолютно никак не структурированный и не форматированный.
Во дела, подумал я. Ведь чел, заходя на сайт и видя такой бардак – сразу сбежит! Плюс к этому, я не знаю сколько таких людей попадает на сайт и скольких потенциальных посетителей я лишаюсь, т.к. кода статистики ЛИ там по просту нет, а с парсерами логов веб-сервера заморачиваться не хотелось.
Что я сделал? Первым делом закрыл директорию от индексации в robots.txt, а потом подумал – стоп! Траф есть – зачем его обрубать? Убрал запрет и сделал следующее…
В файле .htaccess прописал RewriteRule с этого txt-шника на файл с php-кодом. Далее, препарировал достаточно известный модуль для DLE «Переходы», вырезал из него код для определения поискового запроса, и если посетитель пришел с какой-либо поисковой системы – генерировал локальный адрес на сайт и редиректил посетителя туда, где он находил то что ему нужно.
Другими словами, если бы при запросе «Джигурда» ПС выдала ссылку на мой txt-шник и пользователь перешел бы по ней, то скрипт, перехватив поисковый запрос («Джигурда»), отправил бы посетителя на… адрес вида «http://site.ru/search/Djigurda».
Проверил – все работает. Следующий нюанс – если к нам забрел поисковый робот, а не посетитель с поиска – показываем ему содержимое txt-файла. Пусть думает, что все так и должно быть
И последний момент – надо же как-то собирать статистику. Т.к. на проекте установлен счетчик LiveInternet – то и сливать посещения нашего txt-шника надо ЛайвИнтернету. Смотрим исходный код счетчика:
<!--LiveInternet counter--><script type="text/javascript"><!-- new Image().src = "//counter.yadro.ru/hit?r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";h"+escape(document.title.substring(0,80))+ ";"+Math.random();//--></script><!--/LiveInternet-->
И переносим его на PHP:
$url = "http://site.ru/path_to_dir/txt_file.txt"; $li = "http://counter.yadro.ru/hit?q;r".urlencode($_SERVER["HTTP_REFERER"]).";s100*100*8;u".urlencode($url).";huniquequeries;0.".rand(999999999, 9999999999); file_get_contents($li);
Разрешение экрана пользователя PHP определять не умеет, поэтому ставим 100х100 – проще будет отслеживать статистику. УРЛ страницы на первое время оставляем оригинальный – чтобы понять, много ли туда народу попадает. С курл’ом заморачиваться не было необходимости, поэтому обошлось малой кровью – file_get_contents(), благо на своем сервере можно делать все что хочешь. Для надежности все же сделал отдельно локальное логирование посещений.
Вот собственно и все. Заливаем файлы и ждем. В итоге за сутки в данный файл тыкнулось порядка 100 посетителей. Немного? 10% от дневного трафа. Файл стал самой частой точкой входа по статистике LI.
Вот такой вот эксперимент, возникший случайно и на ровном месте. Экспериментируйте, находите нестандартные решения
