我将以 SO 网站为例。要转到问题列表,网址是 www.stackoverflow.com/questions。在幕后,这是一个控制器(其名称未知)和它的一个动作。假设这是controller=home和action=questions。
如何防止用户输入 www.stackoverflow.com/home/questions ,这会导致相同的页面,并会降低页面的排名,就 SEO 而言。是否需要重定向来解决这个问题?是否需要一些特殊的路由规则来处理这种情况?还有什么?
谢谢
我将以 SO 网站为例。要转到问题列表,网址是 www.stackoverflow.com/questions。在幕后,这是一个控制器(其名称未知)和它的一个动作。假设这是controller=home和action=questions。
如何防止用户输入 www.stackoverflow.com/home/questions ,这会导致相同的页面,并会降低页面的排名,就 SEO 而言。是否需要重定向来解决这个问题?是否需要一些特殊的路由规则来处理这种情况?还有什么?
谢谢
在PDC 的 Phil Haack 的演讲中,Jeff 展示了 Stack Overflow 的一些源代码。他展示的其中包括一些路线注册的代码。他在控制器中有这些,我不清楚他是否使用默认路由。例如,如果没有默认路由,您就不必担心 /home/questions。
至于/questions/index,是的,永久重定向是要走的路。您不会因为永久重定向而受到任何搜索引擎惩罚。
另一种消除 /home/questions 的方法是使用路由约束。
您想使用以下路线。您只需创建一条新路由,从而消除控制器在路由中的需要,这真的很容易。您创建一个仅包含操作的模板字符串,并将控制器默认为您要使用的控制器,例如“Home”。
routes.MapRoute(
"MyRoute",
"{action}",
new { controller = "Home", action = (string)null },
new { action = "[a-zA-z_]+" }
);
希望这可以帮助。
我假设控制器是questions
,动作是index
,即路由处理程序定义的默认动作。因此,该页面没有替代路径。