Обнаружение искателя 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 в список агентов, и, конечно же, меня не перенаправляют.

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

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

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

должно быть

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

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

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

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