Собственный лог посещений поисковых роботов на PHP и .htaccess


Давай опустим момент наличия соответствующих логов и прикинемся, что их нет.
А что есть? Правильно, в нашем распоряжении всегда есть robots.txt и почти всегда .htaccess. Ну, и будем надеяться звезды сошлись так, что есть и то, и другое.
 
Начнем конечно же с .htaccess:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^robots.txt$ /robots.php?%{REQUEST_URI}
 

Что здесь нужно прокомментировать даже не знаю. Но все же:
[строка 1] запуск самого модуля mod_rewrite;
[строка 2] ограничение действия правил для отдельного каталога;
[строка 3] базовый URL;
[строка 4] правило, которое перенаправит роботов на сценарий http://example.com/robots.php?...
 
А вот и сам сценариц:

<?php
// сюда мы складываем информацию
$logFile = 'spiders.log';
// здесь заголовок Host
$remoteHost = $_SERVER['HTTP_HOST'];
// здесь IP клиента
$remoteAddr = $_SERVER['REMOTE_ADDR'];
// заголовок User-Agent
$userAgent  = $_SERVER['HTTP_USER_AGENT'];
// откуда мы пришли?
$referer    = $_SERVER['HTTP_REFERER'];
// что мы здесь забыли?
$documentName = $_SERVER['QUERY_STRING'];
// когда?
$requestTime = time();
 
// вполне обыяный robots.txt
$fp = fopen('robots.txt', 'r'); // чтение
$robotsRules = '';
while (!feof($fp)) {
    $robotsRules = fgets($fp);
}
fclose($fp);
 
header('Content-type: text/plain'); // обычный текст
echo $robotsRules; // отдаем
 
$fp = fopen($logFile, 'a'); // дозапись
$statString = fprintf($fp, "%d/%s [%s] [%s] [%s] [%s] [%s]",
                           $requestTime,
                           date("d-m-Y H:i:s"),
                           $remoteAddr,
                           $userAgent,
                           $remoteHost,
                           $referer,
                           $documentName);
fclose($fp);
?>
 


Добавить комментарий

Логин:
Пароль:
Проверочное число: