所以我有一个像这样的ActionName:
[ActionName("Chicago-Bears")]
public ActionResult ChicagoBears() {
return View();
}
Google将其编入索引为:http://www.example.com/Teams/ChicagoBears
我使用IIS6并且无法访问IIS。
当然,它有一个连字符。因此,如果有人点击该链接,Google就会显示404。
如何在此实例中设置301重定向?我无法创建另一个名为ChicagoBears()的方法,所以......
谢谢你们。
答案 0 :(得分:5)
为Teams / ChicagoBears创建一条路径,指向一个提供永久重定向的操作。
在Global.asax中......
routes.MapRoute("ChicagoBearsRedirect",
"Teams/ChicagoBears",
new { controller = "Teams", action = "RedirectChicagoBears" }
);
在TeamsController中......
public ActionResult RedirectChicagoBears()
{
return RedirectToActionPermanent("Chicago-Bears");
}
答案 1 :(得分:3)
网址重写模块是您的朋友。学习它,活它,爱它...
http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/
当我从DasBlog迁移到WordPress时,我广泛使用它。所有旧的博客网址都使用301重定向到新的。强烈推荐。
更新:IIS6有URL重写器。一个快速的谷歌搜索出现了:
答案 2 :(得分:1)
更新:我引用的此博客似乎不再可用,因此我更新了链接以引用互联网存档版本。
查看此博客文章,了解最佳解决方案*:https://web.archive.org/web/20160528185929/http://www.eworldui.net/blog/post/2008/04/25/ASPNET-MVC-Legacy-Url-Routing.aspx
基本上他正在做的是创建一个可以用于多个路由的可重用类,它们只是发出永久重定向到指定的Action方法。
**注意:这不是我的博客,而是我遇到的一个。*
答案 3 :(得分:0)
关于这一方的晚会很晚,但我写了 a blog post about permanent redirects for legacy routes ,允许这个 -
routes.MapLegacyRoute(
null,
"Teams/ChicagoBears",
new { controller = "Teams", action = "ChicagoBears", area="" }
);
使用Location
使用路由值生成要重定向的Url.Action
,因此只要RouteTable中的路由与路由值匹配,301重定向就会按预期工作。在您的示例中,当网址格式与http://www.example.com/Teams/Chicago-Bears
匹配时,生成的网址应为"Teams/ChicagoBears"
。
我不会在这里重复代码,因为它有很多,而且它在博客上