【问题标题】:Robots.txt file in MVC.NET 4MVC.NET 4 中的 Robots.txt 文件
【发布时间】:2015-08-15 05:05:51
【问题描述】:

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

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

那么我们应该在我们的项目中添加一个带有这个body的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" });

我的问题是机器人是否会抓取具有 [Authorization] 属性的控制器,例如Administration

【问题讨论】:

  • 对于那些尝试使用上述代码的人:它可以工作,但您必须激活路径“robots.txt”由您的 web.conf 中的 MVC 路由处理,请参阅:@987654321 @

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


【解决方案1】:

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

【讨论】:

  • 我认为对于较新的 MVC,您可以将文件放入 wwwroot 吗?我还没有测试过,但我想它会起作用。
  • @Rub3s wwwroot 是 IIS 特定的东西。就我而言,我正在使用 kestrel 开发和部署到 linux
【解决方案2】:

机器人是否会抓取具有 [Authorization] 属性的控制器,例如 Administration

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

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

http://mydomain/robots.txt

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

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

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

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

【讨论】:

  • No buddy 在我的问题中,我提到了一些私有控制器不允许机器人使用。他们可以抓取需要授权的私有控制器吗?
  • 不,他们不能,就像拥有网络浏览器的人可以抓取任何需要授权的 URL。更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2022-12-18
  • 2016-03-10
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多