Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Asp.NETMVC路由:在URL中使用单个元素的最佳方式?_Asp.net Mvc_Routing_Seo - Fatal编程技术网

Asp.net mvc Asp.NETMVC路由:在URL中使用单个元素的最佳方式?

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

我将以SO站点为例。要查看问题列表,url为www.stackoverflow.com/questions。在场景背后,这将传递给控制器(其名称未知)及其操作之一。假设这是控制器=主页操作=问题

如何防止用户键入www.stackoverflow.com/主页/问题,这将导致同一页面,并在SEO方面降低页面排名。解决这个问题需要重定向吗?是否需要一些特殊的路由规则来处理这种情况?还有别的吗


谢谢

我假设控制器是
问题
,操作是
索引
,即路由处理程序定义的默认操作。因此,页面没有其他路径。

在此期间,Jeff展示了堆栈溢出的一些源代码。他展示的内容包括一些路线登记的代码。他在控制器中有这些,我不清楚他是否使用默认路径。例如,如果没有默认路线,您就不需要担心/home/问题

至于/问题/索引,是的,永久重定向是一条路要走。永久重定向不会对搜索引擎造成任何惩罚


消除/home/问题的另一种方法是使用路线约束。

您想使用以下路线。只需创建一个新的路由,就可以很容易地消除控制器在路由中的需要。您创建了一个只包含操作的模板字符串,并将控制器默认为要使用的控制器,例如“Home”


希望这有帮助。

你肯定是对的。但是关于/问题和/问题/索引呢?这同样是同一个页面的两个URL。我认为至少是这样,阻止了/questions/index路由——它不存在。所以答案似乎是不要设置一条你不想服务的路线。
routes.MapRoute(
    "MyRoute",
    "{action}",
    new { controller = "Home", action = (string)null },
    new { action = "[a-zA-z_]+" }
);