Asp.net 重定向区域';将默认操作添加到单个url
好吧,我应该知道……但是……我伸出手来是因为我的头撞到了墙上 有一个MVC区域,我们称之为“商店”。有一个控制器,我们叫它“家”。有一个动作,我们称之为“索引”。以下URL将显示同一页面: /存储/主页/索引 /商店/家庭/Asp.net 重定向区域';将默认操作添加到单个url,asp.net,asp.net-mvc,routing,asp.net-mvc-areas,Asp.net,Asp.net Mvc,Routing,Asp.net Mvc Areas,好吧,我应该知道……但是……我伸出手来是因为我的头撞到了墙上 有一个MVC区域,我们称之为“商店”。有一个控制器,我们叫它“家”。有一个动作,我们称之为“索引”。以下URL将显示同一页面: /存储/主页/索引 /商店/家庭/ 出于搜索引擎优化的目的,我想限制它“/store/home/”。如何做到这一点?如果您已经使用此URL发布了您的网站,正确的方法是使用301重定向。这是确保任何指向/store/home/index路线的链接不会立即变成死链接,从而停止计算SEO分数的唯一方法。这可以使用
出于搜索引擎优化的目的,我想限制它“/store/home/”。如何做到这一点?如果您已经使用此URL发布了您的网站,正确的方法是使用301重定向。这是确保任何指向
/store/home/index
路线的链接不会立即变成死链接,从而停止计算SEO分数的唯一方法。这可以使用
或者,您也可以在页面中添加一个指向/store/home/
URL的链接
但是,如果您尚未发布该网站,则可以添加直接指向自定义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重写模块的替代方案。如果您有URL,您知道随着时间的推移您将退出,并且您希望通过应用程序中的一个操作自动执行此操作,那么这将非常方便。并非所有浏览器都遵守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>
//Status301.cshtml
@{
ViewBag.Title=“页面已移动”;
}
@节元刷新{
}
页面移动
此页面已移动。如果在5秒内未重定向,请单击此链接:。
//
您试过这个吗?