我想根据访问者是否来自搜索引擎,以不同方式显示我的网页。我想我正在检测搜索引擎推荐?我也想知道用于到达我网站的搜索字词。
到目前为止,我的解决方案是:
1)过滤包含常见搜索引擎网址的HTTP请求引荐对象,即http://www.google.com/search,http://www.bing.com/search或http://search.yahoo.com/search
2)为搜索项解析引用者的查询字符串参数,例如“Q =搜索+条款+为我的网站+ + +去这里”
我觉得这不是最强大的解决方案,因为它错过了鲜为人知的搜索引擎,而且每个搜索引擎都可能拥有搜索词的自己的查询字符串参数。例如,Google和Bing的搜索字词参数都是“q”,但据我所知,雅虎的“p”是“p”。那些像+, - 等特殊运算符呢?
有更通用的方法吗?或者是否有一个可以帮助我处理更多搜索引擎的库?我正在使用在Tomcat上运行的Java,但欢迎来自任何语言和服务器设置的想法。
答案 0 :(得分:2)
看看这里: http://www.gdargaud.net/Hack/Searches.html
在这里: http://search.cpan.org/perldoc?URI::ParseSearchString
2种略有不同的方法,但它们涵盖了更广泛的搜索引擎及其引用字符串。
答案 1 :(得分:1)
您的方法是您可以做的最好的方法。我在Drupal上运行了一个类似的模块,
http://drupal.org/project/search_engine_referers
如果您查看代码,它就完全按照您的说法执行。我认为他们还没有支持Bing.com的版本。
考虑到搜索市场份额的来源,如果你可以处理谷歌(AOL使用谷歌),必应和雅虎,你可以获得超过90%的搜索。你真的需要担心其他搜索网站吗?如果你像我一样在中国,请将baidu.com添加到列表中。
有些奇怪的小型搜索网站是您无法处理的。他们一次改变他们的参数。有些甚至使用POST来发送查询,因此它在引用者中不可用。
答案 2 :(得分:1)
对于PHP,您请求$ _REQUEST [“HTTP_REFERRER”]并使用一些pregs或eregs解析搜索字符串。