Я пытаюсь написать 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 может вызвать у вас проблемы с поисковыми провайдерами. В этой статье объясняется, почему.