2009-08-14 19 views
2

Je voudrais afficher ma page différemment pour le visiteur en fonction de si elles venaient d'un moteur de recherche ou non. Je suppose que je détecte les références de moteur de recherche? J'aimerais aussi connaître les termes de recherche utilisés pour accéder à mon site.Un visiteur de mon site Web provient-il d'un moteur de recherche? Quels étaient leurs termes de recherche?

Ma solution à ce jour est la suivante:

1) de filtre sur les referers de requête HTTP contenant des URL des moteurs de recherche communs, à savoir http://www.google.com/search, http://www.bing.com/search ou http://search.yahoo.com/search

2) Parse le paramètre de chaîne de requête de la référant pour les termes de recherche, par exemple "q = recherche + termes + pour + mon + site web + go + ici"

Je pense que ce n'est pas la solution la plus robuste, car il manque des moteurs de recherche moins connus et chaque moteur de recherche peut avoir son propre paramètre de chaîne de requête pour les termes de recherche. Par exemple, les paramètres du terme de recherche de Google et de Bing sont tous les deux «q», mais Yahoo est «p» pour autant que je sache. Et qu'en est-il des opérateurs spéciaux comme +, -, etc.?

Existe-t-il une façon plus générale de procéder? Ou y a-t-il une bibliothèque qui m'aiderait à gérer plus de moteurs de recherche? Je travaille avec Java s'exécutant sur Tomcat, mais les idées de n'importe quelle langue et configuration du serveur sont les bienvenues.

Répondre

1

Votre approche est à propos de ce que vous pouvez faire de mieux. J'ai couru un module similaire sur Drupal,

http://drupal.org/project/search_engine_referers

Si vous regardez le code, il fait exactement ce que vous avez dit. Je ne pense pas qu'ils aient une version supportant Bing.com pour le moment. Considérant l'endroit où la part de marché de recherche va, vous obtenez bien plus de 90% des recherches si vous pouvez gérer Google (AOL utilise Google), Bing et Yahoo. Avez-vous vraiment besoin de vous soucier des autres sites de recherche? Si vous êtes en Chine comme je suis, ajoutez baidu.com à la liste.

Il existe des petits sites de recherche bizarres que vous ne pouvez pas gérer. Ils changent leur paramètre de temps en temps. Certains utilisent même POST pour envoyer la requête de sorte qu'il n'est pas disponible dans le référent.

1

Dans le cas de PHP, vous demandez le $ _REQUEST ["HTTP_REFERRER"] et analysez la chaîne de recherche avec quelques pregs ou eregs.