【问题标题】:mvc robots.txt route not workingmvc robots.txt 路由不起作用
【发布时间】:2014-11-04 10:34:49
【问题描述】:

这是我的 RouteConfig 文件:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

当转到 www.mysite.com/Robots.txt 时,我得到 404。

在我的 HomeController 中,我有一个 Robots() 操作。

我做错了什么?

编辑:转到 www.mysite.com/Robots 给我一个服务器错误 404。转到 www.mysite.com/Robots.txt 给我一个 IIS 404 错误。会不会跟这有关系?

转到 www.mysite.com/Home/Robots 有效,但 www.mysite.com/Home/Robots.txt 提供 IIS 404。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您真的需要在 www.mysite.com/robots.txt 以外的其他位置提供 robots.txt 吗?

    否则就这样做:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("robots.txt");
    }
    

    并将文件放在 Visual Studio 的根文件夹中。

    【讨论】:

    • “在我的 HomeController 我有一个 Robots() 动作” - 猜测 OP 想要一个动态生成的 robots.txt 文件。
    【解决方案2】:

    这是一个迟到的回复,但万一其他人遇到它,IIS 会选择扩展并尝试将其作为静态文件进行管理。它没有到达路由模块。

    您可以使用 runAllManagedModulesForAllRequests 禁用此功能,但会影响性能。安迪布朗在这里列出了一些解决方案和详细解释:https://stackoverflow.com/a/17037935/522859

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 2013-06-01
      • 2013-02-23
      • 2018-03-11
      • 2012-02-13
      • 2010-11-29
      相关资源
      最近更新 更多