2009-07-24 8 views
2

J'essaie d'écrire un sitemap.php qui agit différemment en fonction de qui cherche. Je veux rediriger les robots vers mon sitemap.xml, car ce sera la page la plus mise à jour et contiendra toutes les informations dont ils ont besoin, mais je veux que mes lecteurs réguliers affichent un sitemap html sur la page php.php détection de chenilles

Tout cela sera contrôlé à partir de l'en-tête php, et j'ai trouvé this code sur le web qui, selon son apparence, devrait fonctionner, mais ce n'est pas le cas. Quelqu'un peut-il m'aider à craquer cela pour moi?

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!"; 
} 

Il semble assez simple, mais comme vous pouvez le voir, j'ai ajouté Firefox dans la liste des agents, et bien sûr je ne suis pas redirigés ..

Merci pour toute aide :)

Répondre

11

Vous avez une erreur dans votre code:

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

devrait être

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

Si vous développez avec des avis sur vous allez attraper ces erreurs beaucoup plus facilement.

De plus, vous voulez probable exit après la header

Avertissement: voilage peut vous causer des ennuis avec les fournisseurs de recherche. This article explique pourquoi.

+2

+1 pour la suggestion de préavis – Eineki

+0

+1 pour le Eineki ... –

+0

Doh! Je ne peux pas croire que j'ai raté ça. Bonne suggestion sur les avis aussi, doit le faire. – MrFidge