Robots.txt 文件在 MVC.NET 4

Robots.txt file in MVC.NET 4

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

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

那么我们应该在我们的项目中添加一个 Robots.cshtml 文件和这个 body

@{
    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 等 [授权] 属性的控制器?

do robots crawl the controllers which has [Authorization] attribute like Administration

如果他们找到 link,他们可能会尝试抓取它,但他们会失败,就像任何使用未登录的网络浏览器的人一样。机器人没有特殊的访问能力您的网站不同于标准浏览器。

请注意,符合 Robots Exclusion Standard 的机器人会准确抓取 URL

http://mydomain/robots.txt

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

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

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

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

这段简单的代码适用于我的 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);
    }