Asp.net mvc Asp.NETMVC路由:在URL中使用单个元素的最佳方式?
我将以SO站点为例。要查看问题列表,url为www.stackoverflow.com/questions。在场景背后,这将传递给控制器(其名称未知)及其操作之一。假设这是控制器=主页和操作=问题 如何防止用户键入www.stackoverflow.com/主页/问题,这将导致同一页面,并在SEO方面降低页面排名。解决这个问题需要重定向吗?是否需要一些特殊的路由规则来处理这种情况?还有别的吗Asp.net mvc Asp.NETMVC路由:在URL中使用单个元素的最佳方式?,asp.net-mvc,routing,seo,Asp.net Mvc,Routing,Seo,我将以SO站点为例。要查看问题列表,url为www.stackoverflow.com/questions。在场景背后,这将传递给控制器(其名称未知)及其操作之一。假设这是控制器=主页和操作=问题 如何防止用户键入www.stackoverflow.com/主页/问题,这将导致同一页面,并在SEO方面降低页面排名。解决这个问题需要重定向吗?是否需要一些特殊的路由规则来处理这种情况?还有别的吗 谢谢我假设控制器是问题,操作是索引,即路由处理程序定义的默认操作。因此,页面没有其他路径。在此期间,Je
谢谢我假设控制器是
问题
,操作是索引
,即路由处理程序定义的默认操作。因此,页面没有其他路径。在此期间,Jeff展示了堆栈溢出的一些源代码。他展示的内容包括一些路线登记的代码。他在控制器中有这些,我不清楚他是否使用默认路径。例如,如果没有默认路线,您就不需要担心/home/问题
至于/问题/索引,是的,永久重定向是一条路要走。永久重定向不会对搜索引擎造成任何惩罚
消除/home/问题的另一种方法是使用路线约束。您想使用以下路线。只需创建一个新的路由,就可以很容易地消除控制器在路由中的需要。您创建了一个只包含操作的模板字符串,并将控制器默认为要使用的控制器,例如“Home”
希望这有帮助。你肯定是对的。但是关于/问题和/问题/索引呢?这同样是同一个页面的两个URL。我认为至少是这样,阻止了/questions/index路由——它不存在。所以答案似乎是不要设置一条你不想服务的路线。
routes.MapRoute(
"MyRoute",
"{action}",
new { controller = "Home", action = (string)null },
new { action = "[a-zA-z_]+" }
);