使用robots.txt在子域上禁用或取消索引

时间:2011-02-05 01:58:50

标签: robots.txt

我将dev.example.com和www.example.com托管在不同的子域中。我希望抓取工具删除dev子域的所有记录,但将其保留在www上。我使用git存储两者的代码,所以理想情况下我希望两个网站都使用相同的robots.txt文件。

是否可以使用一个robots.txt文件并将其从dev子域中排除?

4 个答案:

答案 0 :(得分:28)

您可以使用Apache重写逻辑在开发域上提供不同的robots.txt

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^dev\.qrcodecity\.com$
    RewriteRule ^robots\.txt$ robots-dev.txt
</IfModule>

然后创建一个单独的robots-dev.txt

User-agent: *
Disallow: /

答案 1 :(得分:4)

抱歉,这很可能是不可能的。一般规则是每个子域都是单独处理的,因此都需要robots.txt文件。

子域名通常是使用子文件夹实现的,这些子文件夹具有url重写位置,用于执行您希望跨子域共享单个robots.txt文件的映射。以下是对如何执行此操作的详细讨论:http://www.webmasterworld.com/apache/4253501.htm

但是,在您的情况下,您希望每个子域的行为都需要不同的文件。

答案 2 :(得分:3)

请注意,如果您阻止Google对子域名下的网页编制索引,他们就不会(通常)立即退出Google索引。它只是阻止谷歌重新索引这些页面。

如果dev子域尚未启动,请确保它拥有自己的robots.txt,禁止所有内容。

但是,如果dev子域已经有索引的页面,那么您需要首先使用机器人noindex元标记(这需要Google最初抓取页面以读取此请求),然后设置robots.txt文件一旦页面退出谷歌索引,设置一个谷歌网站管理员工具帐户 - 它有助于解决这个问题。

答案 3 :(得分:0)

  

我希望Google删除dev子域的所有记录,但保留www。

如果开发站点已被索引,请向抓取工具返回404 or 410 error,以将内容从列表中删除。

  

是否可以有一个不包含子域的robots.txt文件?

如果您的代码是完全静态的,那么您要寻找的是非标准 host directive

User-agent: *
Host: www.example.com

但是,如果您可以支持模板语言,则可以将所有内容保存在一个文件中:

User-agent: *
# if ENVIRONMENT variable is false robots will be disallowed.
{{ if eq (getenv "ENVIRONMENT") "production" }}
  Disallow: admin/
  Disallow:
{{ else }}
  Disallow: /
{{ end }}