2010-12-09 90 views
1

所以我有一個ActionName像這樣:ASP.NET MVC - 301重定向 - SEO問題

[ActionName("Chicago-Bears")] 
public ActionResult ChicagoBears() { 
    return View(); 
} 

谷歌已收錄此爲:http://www.example.com/Teams/ChicagoBears

我堅持使用IIS6和都進不去IIS自己。

當然,它現在有一個連字符。因此,如果有人點擊該鏈接,Google將顯示404。

如何在此實例中設置301重定向?我不能創建另一個名爲ChicagoBears()的方法,所以...

謝謝你們。

+0

你不需要芝加哥熊,只是與ActionName屬性的另一種方法。然後你可以在那裏重定向。 – Rangoric 2010-12-09 18:13:46

回答

1

UPDATE:這個博客,我引用似乎不再可用,所以我更新了鏈接以引用互聯網存檔版本。

看看這個博客帖子爲一個偉大的解決方案*:https://web.archive.org/web/20160528185929/http://www.eworldui.net/blog/post/2008/04/25/ASPNET-MVC-Legacy-Url-Routing.aspx

基本上他在做什麼是創建可用於多種途徑可重複使用的類,他們只是執行一個永久重定向到指定的操作方法。

**注:這不是我的博客,但我只是碰到一個*

5

爲團隊/芝加哥熊創建一條指向永久重定向的動作的路線。

在Global.asax中......

routes.MapRoute("ChicagoBearsRedirect", 
    "Teams/ChicagoBears", 
    new { controller = "Teams", action = "RedirectChicagoBears" } 
); 

在TeamsController ...

public ActionResult RedirectChicagoBears() 
{ 
    return RedirectToActionPermanent("Chicago-Bears"); 
} 
+0

得到一個比這更好的方法。網站上的每個鏈接/路線基本都發生了變化。我想知道我是否應該等待Google重新編制索引,而不是讓這個小小的重定向方法遍佈整個地方。 – 2010-12-09 18:01:24

+0

是「RedirectToActionPermanent」.NET 4嗎? – 2010-12-09 18:02:03

+1

Yuck。路由可以接受正則表達式,所以如果所有的路由都應該有一個 - 在這個路由中你可以找到那些不需要的路由,並且將它們全部發送到重定向的同一個動作。另一種可能性是處理404錯誤。 – Brian 2010-12-09 18:06:03

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重定向就會按預期工作。在您的示例中,當URL模式匹配"Teams/ChicagoBears"時,生成的URL應爲http://www.example.com/Teams/Chicago-Bears

這裏我就不再重複代碼,有相當多的,它是在博客上