我的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)到第一个请求(没有查询字符串的那个)?
有多个参数具有可变参数名称的动作,我无法想出一个简单的解决方法。
答案 0 :(得分:1)
如果它用于搜索引擎优化,那么您可以使用Canonical Url来防止搜索引擎对您的网页进行重复索引 如果你在example.com/controller/action?id=5页面上添加它,它将用于让搜索引擎知道 - 不要将其复制为不同的内容