我想停止我的几个页面显示在搜索结果中。我的理解是,我将以下内容添加到页面的部分:
<meta name="robots" content="noindex,nofollow"/>
问题是我的页面使用了一个通用的布局页面。类似于:
@{
Layout = "~/Views/Shared/_VanillaLayout.cshtml";
}
布局页面内部是head部分,包含大量链接、脚本和元标记。我不想为可索引和不可索引的页面重复这一点。
从我的研究中我发现:-
节是错误的。希望,我错过了一些东西,有一个好的(非坏的)方法来做到这一点,或者我上面提到的方法之一毕竟不是那么坏。
在我看来,最简单的方法是在布局文件的标记中定义一个节,您可以选择在视图中填充数据
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title - My ASP.NET MVC Application</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
<!-- Adding a RenderSection here, mark it as not required-->
@RenderSection("AdditionalMeta", false)
@Styles.Render("~/Content/css")
</head>
现在,在任何需要添加额外元数据的视图中,只需在视图文件的结尾/开头(在模型声明之后)添加以下代码
@section AdditionalMeta
{
<meta name="robots" content="noindex,nofollow"/>
}
因为所有的Razor内容都是在服务器端处理的,所以在以下情况下不会有问题:a)如果某些爬虫不实现JS,JS附加项;b)不需要对tag/等进行后期附加。此外,标记为“不需要”意味着您只需要更新不想被索引的页面,并且不必在应用程序中的每个页面上设置变量。