Asp.net mvc ASP.NET MVC-如何永久重定向“;行动?id=5“;样式url';s至;行动/5“;

Asp.net mvc ASP.NET MVC-如何永久重定向“;行动?id=5“;样式url';s至;行动/5“;,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-routing,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",

在我的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()
    )
);
基于此默认路由配置,可通过以下方式访问操作(控制器的方法):

但是,也可以通过以下方式访问它们:

这不利于SEO(重复内容)

是否有任何常规方法将(301)第二个请求(带查询字符串)重定向到第一个请求(不带查询字符串的请求)


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

如果它用于SEO优化,那么您可以使用规范Url,这将防止搜索引擎重复索引您的页面
如果您将其添加到example.com/controller/action?id=5页上,它将用于让搜索引擎知道-不将其复制为不同的内容

如果它用于SEO优化,那么您可以使用规范Url,这将防止搜索引擎对页面进行重复索引。@Neel您的意思是我应该添加以下元数据每个页面中的标签:
不是每个页面上都有标签,但是如果您在页面上添加标签,它将用于让搜索引擎知道-不要将其复制为不同的内容,我认为这是合理的,谢谢!(顺便说一句,对不起,我既不能向上投票也不能标记为回答您的评论。)这也将有助于避免为这些请求进行代价高昂的重定向。