Answers:
第一步是检测要允许的漫游器的用户代理,如果不是要允许的用户代理,则提供另一个文件。
例如,您可能有两个版本的robots.txt
,其中一个版本包含一个,而另一个版本中没有引用该站点地图,因此,如果竞争对手在您的内看,他们将找不到该站点地图robots.txt
。
然后,您可以检测到对站点地图URL的访问,并仅在UA正确时才提供站点地图。如果您另外提供通用404页面,则竞争对手甚至可能不知道您的站点地图存在。
但是,到目前为止,所描述的所有措施都只是模糊不清的安全措施。可以轻易地欺骗用户代理。
因此,Google 建议,要检测真实的GoogleBot,您:
googlebot.com.
。把它们加起来:
Microsoft 建议使用相同的过程来检测其搜寻器。
此技巧适用于Yahoo! 也一样
如果您使用基于DNS查找的蜘蛛检测,则无需使用404错误。
使用404错误页面的目的是掩盖您的站点地图完全存在。但是,如果您使用的不是仅依赖User-Agent
标头的更高级的技术,就不可能规避它,因此您可以安全地使用其他错误代码,例如403 Forbidden
此处使用的正确错误代码。
狡猾的解决方案是生成两个站点地图。其中第一个是为了您的竞争对手,第二个是是您首选的搜索引擎。用军事术语来说,第一个站点地图是假的。
“伪装”包含您的基本网站结构,主页,联系我们,关于我们的主要类别。它看起来像是真正的交易,并且在您不需要的晦涩的搜索引擎中将非常有用。这对您的竞争对手也没有用。允许对其进行索引,以便他们找到它,并给它一个明显的名称,例如sitemap.xml。
现在,使用代码创建真实的站点地图。给它起一个诸如“ product-information-sitemap.xml”的名称,这样它是一个明智的名称,但实际上比密码更容易猜测。
在Sitemap文件夹的apache配置中,放置一些内容,以便搜索引擎可以访问第二个站点地图,但不能对其进行索引:
<IfModule mod_rewrite.c>
<Files product-information-sitemap.xml>
Header set X-Robots-Tag "noindex"
</Files>
</IfModule>
现在创建代码以保持更新,请考虑使用第三张图像站点地图。根据需要对它进行降级以创建“伪装”。也要注意时间戳,Google确实要注意那些时间戳,如果您的站点地图很大,这一点很重要。
现在创建一个“ cron”作业,以定期将您的产品站点地图提交给Google。在您的crontab条目中添加如下所示的内容,以每周提交一次您的真实站点地图:
0 0 * * 0 wget www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2Fwww.example.com%2Fsitemaps%2Fproduct-information-sitemap.xml
请注意,URL是URL编码的。
如果大小有问题,您也可以gzip您的站点地图,尽管您的网络服务器应该启用该gzip压缩文件(如果启用了该功能)。
您的robots.txt不必特别,只要它不禁止进入站点地图就可以了。确实不需要根据用户代理字符串或任何复杂的内容发送不同的robots.txt文件。只需将您的宝贵内容提取到一个非广告的补充文件中,然后通过cron作业将其提交给Google(而不是等待漫游器)。简单。
如果您拥有要允许的漫游器的IP地址,请执行以下操作:
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 192.168.1.1 # IP 1
allow from 192.168.1.2 # IP 3
allow from 192.168.1.3 # IP 2
</LIMIT>
如果您希望基于用户代理字符串:
Order Allow,Deny
allow from env=good_bot_1
allow from env=good_bot_2
您可以尝试的一种方法:在常规的爬网会话中,Google机器人会访问robots.txt,然后转到站点地图文件。为所有robots.txt内容推送Cookie,并仅允许具有Cookie的用户访问站点地图。当Google漫游器不接受Cookie时,就会出现问题。反之亦然。当用户访问robots.txt以外的页面时,推送Cookie,并拒绝使用Cookie的用户访问站点地图。另外,为您的站点地图添加一个混乱的名称,该名称会随着时间的变化而变化,从而使其难以猜测。如果您的竞争对手在其浏览器中启用了Cookie,那么除非他们遵循搜索引擎遵循的确切路径,否则他们将很难访问站点地图。
我假设我已正确理解您的要求,因此我有勇气回答。
在</html>
标记之前给您的站点地图提供图像链接。使用透明的1px gif文件:
<a href="sitemap.xml"><img src="transparent.gif" alt="" height="1" width="1" /></a>
在包含您的站点地图链接的页面中,设置相关的元标记:
<meta name="robots" content="{index or noindex},follow">
当您按Ctrl+ A选择所有页面时,请检查视觉状态。1px链接是否可见,对您来说有风险吗?
如果您说是,则另一种选择是:
<a href="sitemap.xml"> </a>
这样,普通用户就不会注意到您的链接。搜索引擎会意识到这一点。但是请注意,您问题的内在本质涉及不可能。
我说这是不可能的,因为例如,如果用户在Google中搜索此字词,
* site:www.yoursite.com
如果他们不厌倦地单击next
链接,那么全世界都会看到您的所有链接。
希望这些对您有所帮助。