好的,我應該知道這一點......但是......我伸出手來,因爲我把頭撞在牆上。將區域的默認動作重定向到單個網址
有一個MVC區域,我們稱之爲「商店」。有一個控制器,我們稱之爲「家」。有一個動作,我們稱之爲「索引」。以下URL彈出一個網頁:
/存儲/首頁/指數
/存儲/家庭/
對於搜索引擎優化的目的,我想對其進行限制「/存儲/家/」 。如何做到這一點?
好的,我應該知道這一點......但是......我伸出手來,因爲我把頭撞在牆上。將區域的默認動作重定向到單個網址
有一個MVC區域,我們稱之爲「商店」。有一個控制器,我們稱之爲「家」。有一個動作,我們稱之爲「索引」。以下URL彈出一個網頁:
/存儲/首頁/指數
/存儲/家庭/
對於搜索引擎優化的目的,我想對其進行限制「/存儲/家/」 。如何做到這一點?
如果您已經使用此URL釋放了您的網站,則正確的方法是使用301重定向。這是確保與/store/home/index
路線的任何鏈接都不會立即成爲死鏈接並因此停止計入您的SEO分數的唯一方法。這可以使用URL rewrite module of IIS完成。
或者,您可以將canonical tag添加到指向/store/home/
網址的頁面指向。
但是,如果您尚未發佈該網站,則可以添加直接進入自定義404頁面的路線。
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Store_Non_Match",
"store/home/index",
new { controller = "System", action = "Status404"}
).DataTokens["area"] = "";
context.MapRoute(
"Store_default",
"store/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
然後在您的站點中,使系統控制器返回404頁面和狀態。
public class SystemController : Controller
{
//
// GET: /System/Status301/?url=(some url)
public ActionResult Status301(string url)
{
Response.CacheControl = "no-cache";
Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
Response.RedirectLocation = url;
ViewBag.DestinationUrl = url;
return View();
}
//
// GET: /not-found
public ActionResult Status404()
{
Response.CacheControl = "no-cache";
Response.StatusCode = (int)HttpStatusCode.NotFound;
return View();
}
}
注意上面的控制器還演示瞭如何在應用程序中使用301重定向作爲IIS重寫模塊的替代方法。如果你知道你會隨着時間的推移退出,並且你想從應用程序中的一個動作中自動執行,那麼這很方便。並非所有的瀏覽器都遵守301重定向,所以我的解決方案是返回一個視圖,該視圖嘗試在5秒後執行JavaScript和元刷新重定向,如果其他所有瀏覽器都失敗,則會有超鏈接指向用戶可以點擊的頁面。
// Status301.cshtml
@{
ViewBag.Title = "Page Moved";
}
@section MetaRefresh {
<meta http-equiv="refresh" content="5;@ViewBag.DestinationUrl" />
}
<h2 class="error">Page Moved</h2>
This page has moved. Click this link if you are not redirected in 5 seconds: <a href="@ViewBag.DestinationUrl">@ViewBag.DestinationUrl</a>.
<script>
//<!--
setTimeout(function() {
window.location = "@ViewBag.DestinationUrl";
}, 5000);
//-->
</script>
你試過嗎? http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx#route-areas – Yogiraj 2015-04-06 02:34:15