ASP.net MVC中的默认路由如下:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这意味着我可以通过多种方式访问HomeController / Index操作方法:
http://localhost/home/index
http://localhost/home/
http://localhost/
如何避免为同一操作设置三个网址?
答案 0 :(得分:4)
如果您只想:
http://localhost/
然后:
routes.MapRoute(
"Default",
"",
new { controller = "Home", action = "Index" }
);
如果您只想:
http://localhost/home/
然后:
routes.MapRoute(
"Default",
"home",
new { controller = "Home", action = "Index" }
);
如果你只想:
http://localhost/home/index
然后:
routes.MapRoute(
"Default",
"home/index",
new { controller = "Home", action = "Index" }
);
答案 1 :(得分:1)
您正在看到默认值。
删除控制器和操作的默认值。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {id = UrlParameter.Optional } // Parameter defaults
);
这将使用户输入控制器&动作。
答案 2 :(得分:0)
我不认为你是为SEO做这个吗? Google会对您的重复内容进行处罚,因此值得您考虑一下。
如果是这种情况,路由不是解决问题的最佳方法。您应该在首页的<head>
中添加规范链接。因此,将<link href="http://www.mysite.com" ref="canonical" />
放在Views / Home / Index.aspx页面的头部以及任何网址搜索引擎访问您的主页,所有SEO值都将归因于规范链接中引用的网址。
我去年写了一篇关于SEO concerns from a developer perspective的文章,如果你正在研究这种东西