Обнаружение сканера php

Я пытаюсь написать sitemap.php, который действует по-разному в зависимости от того, кто ищет.

Я хочу перенаправить поисковые роботы на мой sitemap.xml, так как это будет самая обновленная страница и будет содержать всю необходимую им информацию, но я хочу, чтобы мои постоянные читатели показывали карту сайта в формате html на странице php.

Все это будет контролироваться из заголовка php, и я нашел этот код в Интернете, который, судя по всему, должен работать, но это не так. Может ли кто-нибудь помочь взломать это для меня?

function getIsCrawler($userAgent) {
    $crawlers = 'firefox|Google|msnbot|Rambler|Yahoo|AbachoBOT|accoona|' .
    'AcioRobot|ASPSeek|CocoCrawler|Dumbot|FAST-WebCrawler|' .
    'GeonaBot|Gigabot|Lycos|MSRBOT|Scooter|AltaVista|IDBot|eStyle|Scrubby';
    $isCrawler = (preg_match("/$crawlers/i", $userAgent) > 0);
    return $isCrawler;
}

$iscrawler = getIsCrawler($_SERVER['HTTP_USER_AGENT']);

if ($isCrawler) {
    header('Location: http://www.website.com/sitemap.xml');
    exit;
} else {
    echo "not crawler!";
}

Это выглядит довольно просто, но, как вы видите, я добавил Firefox в список агентов, и, конечно же, меня не перенаправляют.

Спасибо за любую помощь :)


person MrFidge    schedule 24.07.2009    source источник


Ответы (2)


У вас ошибка в коде:

$crawler = getIsCrawler($_SERVER['HTTP_USER_AGENT']);

должно быть

$isCrawler = getIsCrawler($_SERVER['HTTP_USER_AGENT']);

Если вы разрабатываете с включенными уведомлениями, вам будет намного легче отловить эти ошибки.

Кроме того, вы, вероятно, захотите exit после header

Предупреждение. Маскировка может привести к проблемам с поисковыми системами. В этой статье объясняется, почему.

person Greg    schedule 24.07.2009
comment
Дох! не могу поверить, что я пропустил это. Хорошее предложение по уведомлениям тоже, сделаю это. - person MrFidge; 24.07.2009

http://develobert.blogspot.com/2008/11/php-robot-check.html

person joebert    schedule 24.07.2009
comment
Хороший - это аккуратный способ сделать это. К сожалению, этот сайт разрабатывается на IIS, а не на apache, поэтому нет htaccess или чего-то подобного, что я могу использовать: x - person MrFidge; 24.07.2009