1

我将以 SO 网站为例。要转到问题列表,网址是 www.stackoverflow.com/questions。在幕后,这是一个控制器(其名称未知)和它的一个动作。假设这是controller=homeaction=questions

如何防止用户输入 www.stackoverflow.com/home/questions 这会导致相同的页面,并会降低页面的排名,就 SEO 而言是否需要重定向来解决这个问题?是否需要一些特殊的路由规则来处理这种情况?还有什么?

谢谢

4

3 回答 3

1

PDC 的 Phil Haack 的演讲中,Jeff 展示了 Stack Overflow 的一些源代码。他展示的其中包括一些路线注册的代码。他在控制器中有这些,我不清楚他是否使用默认路由。例如,如果没有默认路由,您就不必担心 /home/questions。

至于/questions/index,是的,永久重定向是要走的路。您不会因为永久重定向而受到任何搜索引擎惩罚。

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

于 2008-12-10T14:32:13.407 回答
1

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

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

希望这可以帮助。

于 2008-12-10T14:38:53.940 回答
1

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

于 2008-12-10T02:24:05.200 回答