【发布时间】:2013-12-27 14:20:36
【问题描述】:
我的 ASP.NET MVC 4 应用程序中有很多控制器和操作。
默认路由配置为:
routes.Add(
new Route(
url: "{controller}/{action}/{id}",
defaults: new RouteValueDictionary(
new {
controller = "MyController",
action = "Home",
id = UrlParameter.Optional
}
),
routeHandler: new MvcRouteHandler()
)
);
基于此默认路由配置,通过以下方式访问操作(控制器的方法):
http://example.com/controller/action/5
但是也可以通过以下方式访问它们:
http://example.com/controller/action?id=5
这对 SEO 不利(重复内容)。
有什么通用的方法可以将第二个请求(带有查询字符串)重定向(301)到第一个请求(没有查询字符串的那个)?
有些动作有多个参数名称可变,我想不出一个简单的解决方案。
【问题讨论】:
-
如果它用于 SEO 优化,那么您可以使用 Canonical Url,它可以防止搜索引擎对您的页面进行重复索引。
-
@Neel 所以你的意思是我应该在每个页面中添加以下元标记:
<link rel="canonical" href="http://example.com/controller/action/5" /> -
不是在每个页面上,但是如果您将其添加到 example.com/controller/action?id=5 页面上,它将有助于让搜索引擎知道 - 不要将其复制为不同的内容
-
我觉得够合理,谢谢! (顺便说一句,我既不能投票也不能回答你的评论,对不起。)
标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing