Asp.Net MVC路由:在URL中使用单个元素的最佳方法是什么?

时间:2008-12-10 02:21:38

标签: asp.net-mvc routing seo

我将以SO网站为例。要查看问题列表,请访问www.stackoverflow.com/questions。在场景后面,这将转到控制器(其名称未知)和其中一个操作。假设这是 controller = home action = questions

如何阻止用户输入www.stackoverflow.com/home / 问题,这会导致相同的网页,并会降低目前的网页排名作为SEO而言。是否需要重定向才能解决此问题?是否需要一些特殊的路由规则来处理这种情况?还有别的吗?

由于

3 个答案:

答案 0 :(得分:1)

我假设控制器是questions,操作是index,即路由处理程序定义的默认操作。因此,没有替代页面的路径。

答案 1 :(得分:1)

Phil Haack's presentation from PDC期间,Jeff展示了Stack Overflow的一些源代码。他展示的内容包括一些路线注册的代码。他在控制器中有这些,我不清楚他是否使用默认路线。例如,没有默认路由,您无需担心/ home / questions。

对于/ questions / index,是的,永久重定向是可行的方法。对于永久重定向,您不会受到任何搜索引擎惩罚。

消除/ home / questions的另一种方法是使用路由约束。

答案 2 :(得分:1)

您想使用以下路线。您只需创建一条新路线就可以轻松实现,从而无需控制器进入路线。您创建一个仅包含该操作的模板字符串,并将控制器默认为您要使用的控制器,例如“Home”。

routes.MapRoute(
    "MyRoute",
    "{action}",
    new { controller = "Home", action = (string)null },
    new { action = "[a-zA-z_]+" }
);

希望这有帮助。