我有一个分类广告网站。在这个网站上,我将用户访问的每个产品页面存储在数据库中,以便查看他上次访问的产品。
问题是,当谷歌机器人和其他人进入我的网站时,数据库会充满数千个条目,因为它会破坏谷歌访问的数千个产品页面。
我尝试了$_SERVER['HTTP_USER_AGENT']
的各种功能,试图找出当前用户是否是谷歌机器人,如果是,不要破坏数据库中的页面浏览量,这样它就不会收到无用的结果,但它们似乎都不起作用,因为我得到了谷歌ip,并在我的数据库中识别了它们。
你们中有人知道php中的一个好方法来确保谷歌脱颖而出吗?
您可以使用以下snippit,它应该检测GoogleBot,而不是存储到数据库中。
if (!strpos($_SERVER['HTTP_USER_AGENT'],"Googlebot")) {
// log to database
}
为什么你只想把谷歌拒之门外?其他搜索引擎可能也会索引你的网站。bing、雅虎、altavista和其他公司呢?
您可以使用robots.txt
来禁止任何爬网程序为您的网站编制索引。
在你的根目录中制作一个robots.txt,并在其中放入以下内容:
User-agent: *
Disallow: /
如果你想在某些页面上允许爬网程序,你可以设置meta而不是
<meta name="robots" content="noindex, nofollow" />
并不是所有的机器人都是"好"的,并尊重这些标签。
你有没有想过所有其他的机器人、蜘蛛和自动脚本在网上冲浪?它们还会填满你的数据库。了解所有这些UserAgents、IP和其他特性简直是地狱。也许你最好把历史记录限制在25个条目以内。
所以我的答案是:限制你的历史数据库或的条目,将历史记录存储在访问者客户端的cookie中。
<?php echo $_SERVER['REMOTE_ADDR'];?>
会给你客户的地址。然后设置一个会话变量,该变量将根据检查ip的逻辑存储或丢弃页面。
@简的答案更好。尽管这将切断所有机器人的电源。