2010-07-20 70 views
0

我将我的站点地图存储在我的Web文件夹中。我希望网络抓取工具(Googlebot等)能够访问该文件,但我不一定希望所有人都可以访问它。关于站点地图的问题

例如,该位点(stackoverflow.com),具有站点索引 - 如通过其robots.txt文件(https://stackoverflow.com/robots.txt)指定。

但是,当你键入https://stackoverflow.com/sitemap.xml,您被定向到的404页。

我该如何在我的网站上实现同样的事情?

我运行LAMP网站,也是我使用站点地图索引文件(所以我有多个站点地图的网站)。如上所述,我想使用相同的机制通过浏览器使它们不可用。

回答

0

首先,决定哪些网络你想得到你的实际网站地图。

其次,配置Web服务器授予来自这些网络为您的sitemap文件的请求,并配置你的Web服务器重定向所有其他请求你的404错误页面。

对于nginx,您希望将类似allow 10.10.10.0/24;的东西粘贴到站点地图文件的location块中。

对于apache,您正在寻找mod_authz_hostAllow指令,该指令用于站点地图文件的<Files>指令。

+0

这绝对是我想要去的方式。用户代理很容易伪造,所以这有一些吸引力。我知道它绝不是'神奇的银色子弹',但我认为它(至少在边缘上)比包含用户代理字符串的服务器端逻辑更强大。如果请求来自google.com,请提供一个允许访问web文件夹中的sitemap-index.xml和* .gz文件的示例吗? – morpheous 2010-07-20 09:54:53

+0

@Morpheous,诀窍在于找到网络 - 谷歌从googlebot.com爬取,谁知道他们是否足够坚持单个网络块,或者他们是否使用了数十个网络块。我建议你仔细观察你的日志,找出你想要允许的以及你想否认的内容。 – sarnold 2010-07-20 10:12:30

0

可以检查用户代理头的客户端发送的,只有在站点地图传递给已知的搜索漫游。但是,这并不安全,因为用户代理标头很容易被欺骗。

0

堆栈溢出决定谁得到访问的站点地图时,想必会检查两件事情:

  • USER_AGENT
  • 原始IP地址

都将可能对数据库进行匹配已知的合法机器人。

USER_AGENT字符串是很容易的在服务器端语言来检查;假冒也很容易。更多信息: