MVC.NET 4中的Robots.txt文件

时间:2015-06-01 16:29:11

标签: asp.net asp.net-mvc-4 seo robots.txt

我在ASP MVC.NET项目中读过一篇关于忽略某些url机器人的文章。在他的文章中,作者说我们应该在这样的一些off控制器中添加一些动作。在此示例中,他将操作添加到Home Controller:

#region -- Robots() Method --
public ActionResult Robots()
{
    Response.ContentType = "text/plain";
    return View();
}
#endregion

然后我们应该在我们的项目中添加一个Robots.cshtml文件

@{
    Layout = null;
}
# robots.txt for @this.Request.Url.Host

User-agent: *
Disallow: /Administration/
Disallow: /Account/

最后我们应该将这行代码添加到Gloabal.asax

routes.MapRoute("Robots.txt",
                "robots.txt",
                new { controller = "Home", action = "Robots" });

我的问题是,机器人是否会抓取具有Administration等[授权]属性的控制器?

2 个答案:

答案 0 :(得分:11)

  

机器人会抓取具有[授权]属性(如管理

)的控制器

如果他们找到了指向它的链接,他们可能会尝试抓取它,但它们会像任何没有登录的网络浏览器一样失败。机器人没有特殊的能力以不同于标准的方式访问您的网站浏览器。

请注意,符合Robots Exclusion Standard的机器人会抓取确切的网址

  

http://mydomain/robots.txt

您可以根据需要为该网址创建响应。一种方法当然是拥有一个处理该请求的控制器。您也可以添加一个文本文件,其内容与您从控制器返回的内容相同,例如

User-agent: *
Disallow: /Administration/
Disallow: /Account/

到项目的根文件夹,并确保将其标记为内容,以便将其部署到网站。

添加此robots.txt条目会阻止合规机器人尝试浏览需要身份验证的控制器(并稍微减轻您网站上的负载),但如果没有机器人文件,他们只会尝试使用该网址并失败。

答案 1 :(得分:0)

这段简单的代码可用于我的asp net core 3.1站点:

    [Route("/robots.txt")]
    public ContentResult RobotsTxt()
    {
        var sb = new StringBuilder();
        sb.AppendLine("User-agent: *")
            .AppendLine("Disallow:")
            .Append("sitemap: ")
            .Append(this.Request.Scheme)
            .Append("://")
            .Append(this.Request.Host)
            .AppendLine("/sitemap.xml");

        return this.Content(sb.ToString(), "text/plain", Encoding.UTF8);
    }