Answers:
您可以robots.txt
基于通过其访问站点的子域提供其他文件。在Apache上执行此操作的一种方法是使用.htaccess中的mod_rewrite在内部重写URL。就像是:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteRule ^robots\.txt$ robots-disallow.txt [L]
上述规定,对于所有请求robots.txt
,其中主机是其他比什么www.example.com
或example.com
,然后在内部重写请求robots-disallow.txt
。然后robots-disallow.txt
将包含Disallow: /
指令。
如果您的.htaccess文件中还有其他指令,则此指令将需要在任何路由指令之前靠近顶部。
sub.example.com/robots.txt
,因此您需要根据子域做一些事情以提供不同的响应。您无需使用mod_rewrite,但这是我见过多次的技术。如果robots.txt
是动态生成的,则可以在服务器端代码(例如PHP)中更改响应。
robots.txt
是通过X-Robots-Tag: noindex
在访问此类子域时发送HTTP响应标头来防止建立索引(而不是进行爬网)(也可以在.htaccess中完成)。尽管我认为防止爬网可能更可取。(?)
robots.txt
仅在根目录中存在时有效。
您需要robots.txt
为每个子域网站分别上传一个文件,可以从中访问该网站http://subdomain.example.com/robots.txt
。
将以下代码添加到 robots.txt
User-agent: *
Disallow: /
另一种方法是,您可以<META>
在所有页面中插入一个机器人标签。
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
/robots.txt
和添加Disallow: /
,但是由于共享的代码库,我无法在/robots.txt
不影响所有(子)域的情况下进行修改。”
我将从html页面中删除meta标签,并根据您的子域动态地构建它。例如,我们使用子域dev。为发展。因此,在pageload事件中,我们有以下内容:
' Check if domain is DEV or PROD and set robots accordingly meta tag in head
Dim metatag As HtmlMeta = New HtmlMeta
metatag.Attributes.Add("name", "robots")
If CurrentURL.Contains("dev.advertise-it") Then
metatag.Attributes.Add("content", "NOINDEX, NOFOLLOW")
Else
metatag.Attributes.Add("content", "INDEX, FOLLOW")
End If
Page.Header.Controls.Add(metatag)