我在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
等[授权]属性的控制器?
答案 0 :(得分:11)
机器人会抓取具有[授权]属性(如管理
)的控制器
如果他们找到了指向它的链接,他们可能会尝试抓取它,但它们会像任何没有登录的网络浏览器一样失败。机器人没有特殊的能力以不同于标准的方式访问您的网站浏览器。
请注意,符合Robots Exclusion Standard的机器人会抓取确切的网址
您可以根据需要为该网址创建响应。一种方法当然是拥有一个处理该请求的控制器。您也可以添加一个文本文件,其内容与您从控制器返回的内容相同,例如
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);
}