Bei der SharePoint Suche ist es leider so, dass die gesamten Seiten – auch inkl. Navigation – idiziert werden. Hierzu gibt es einen kleinen Trick um dies zu verhindern. Und zwar benutzt die SharePoint Suche einen eigenen User-Agent: MS Search.
[ToolboxData("<{0}:MsSearchNoIndex runat=server></{0}:MsSearchNoIndex>")]
[ParseChildren(false)]
[PersistChildren(true)]
[Designer(typeof(ContainerControlDesigner))]
public class MsSearchNoIndex : WebControl
{
public bool IsMsSearchActive
{
get
{
return this.Page.Request.UserAgent.Contains("MS Search") ||
this.Page.Request.UserAgent.Contains("Robot");
}
}
protected override void RenderChildren(HtmlTextWriter writer)
{
writer.Write("<!-- User-Agent: " + this.Page.Request.UserAgent + " -->");
if (!this.IsMsSearchActive)
base.RenderChildren(writer);
}
}
Nun werden all jene Inhalte mit dem neuen <MsSearchNoIndex /> Tag umschlossen, die nicht indiziert werden sollen. Eine Empfehlung aus der Praxis ist in den Masterpages die Navigations ContentPlaceholders zu umschließen, damit auch überschriebene Navigationsinhalte ausgeblendet bleiben.
Leider ist dies noch nicht ganz kompatibel zu allen Controls, und so sind leider z.T. die Inhalte im SharePoint Designer nicht zu sehen.