ASP.NET MVC - 如何将“action?id = 5”样式url永久重定向到“action / 5”

时间:2013-12-27 14:20:37

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我的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)到第一个请求(没有查询字符串的那个)?

有多个参数具有可变参数名称的动作,我无法想出一个简单的解决方法。

1 个答案:

答案 0 :(得分:1)

如果它用于搜索引擎优化,那么您可以使用Canonical Url来防止搜索引擎对您的网页进行重复索引 如果你在example.com/controller/action?id=5页面上添加它,它将用于让搜索引擎知道 - 不要将其复制为不同的内容