我有一个ASP.net MVC 5站点。主页位于http://mydomain。
然而,还有第二条到主页的路线 - http://mydomain/home/index - 我认为
这会导致问题,因为它可能被视为重复内容,并且此页面上的图像已被破坏。
我怎样才能完全删除这条路线(所以它会进入404,我猜?)。
我搜索了Google,但只能找到关于完全从路径中移除Home的文章 - 而不是我需要的。
我正在使用属性路由,这就是RouteConfig.cs中的所有内容:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Enable Route Attributes in Controllers
routes.MapMvcAttributeRoutes();
// Fall through all routes
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Home Index操作没有属性路径(正如您可能期望的那样?)。这个/ home / index路由甚至可以用于新生成的MVC项目 - 我认为这是一个坏主意吗?
我该怎么做?
删除此路线是否有任何问题我可能没有考虑过?
THX。
答案 0 :(得分:3)
您可以使用IgnoreRoute()
阻止您不想要的非预期路线。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("Home");
routes.IgnoreRoute("Home/Index");
// Enable Route Attributes in Controllers
routes.MapMvcAttributeRoutes();
// Fall through all routes
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
但是,如果这些网址已经存在,您应该设置301重定向到您想要的规范网址。最简单的方法是使用URL rewrite module。
这个/ home / index路由甚至可以在新生成的MVC项目中运行 - 我认为这是一个坏主意?
我认为这更像是一种伪装的祝福。与使用MVC的任何搜索引擎优化竞争对手相比,当你是那个没有额外工作去除这些路线时,这是一个优势。
答案 1 :(得分:0)
这不是必需的。
默认路由提供可选控制器和操作名称。因此,如果用户没有为路径中的控制器和/或操作添加任何名称(/ Home / Index或/ Home),asp.net将在应用程序路由中放置正确的值。
每当您使用Url.Action
或Url.Route
功能时,它都会为您生成最短链接。 因此,在您的网站中,将始终为您的根生成http://mydomain。例如,类别>它将产生的索引操作http://mydomain/category。
在您的网站中,如果您的链接是这样的话,机器人将永远不会复制内容。如果您手动编写链接,请尽可能简短地写,或者只使用Url.Action
。
关于图像必须有不同的东西,因为图像是静态文件。只需使用"〜/ imagefolder / imagename.jpg"得到他们的方式。 "的〜强>"如果要使应用程序在IIS中的子文件夹上工作,则从应用程序的根目录开始链接非常重要。