301 statt 302 und dann klappt SharePoint auch mit Google?

Man sagt, das google und auch andere Suchmaschinen Seiten nicht indizieren, wenn auf diese per HTTP Status Code 302 umgeleitet wird. Also der ASP.NET Klassiker Response.redirect(“http://minerva.ppedv.de”) bewirkt das diese Seite nicht im Index landet. Außer es gibt woanders einen direkten Hyperlink darauf. In ASP.NET 4.0 gibt es einen neuen Redirect Befehl Response.RedirectPermanent der nun einen 301 Code liefert.

Nun ist SharePoint an dieser Stelle eine Zicke. Üblich SharePoint Sites sind so konfiguriert, das die Links z.b. in der Navigation auf Sitepages in der Form

http://minerva.ppedv.de/

erfolgen. Beim Aufruf wird umgeleitet per 302 auf

http://minerva.ppedv.de/SitePages/Homepage.aspx

Es gibt im Web einige (komplizierte) Möglichkeiten die beschreiben wie man per Routing und URLRewrite eine passende Umleitung vornimmt. Ich habe mich entschieden ein HTTP Modul zu schreiben und mich einfach in die IIS Pipeline einzuklinken. Ob das gut oder schlecht ist, keine Ahnung.

using System;
using System.Web;
public class r301: IHttpModule
{
    public r301()
    {
    }
    public void Dispose()
    {
    }
    public void Init(HttpApplication context)
    {
        context.BeginRequest += (new EventHandler(this.Application_BeginRequest));
        context.EndRequest += (new EventHandler(this.Application_EndRequest));
    }
    private void Application_BeginRequest(Object source, EventArgs e)
    {

   }
    private void Application_EndRequest(Object source, EventArgs e)
    {
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
    
       if (context.Response.StatusCode.ToString() == "302")
        {
            context.Response.Status = "301 Moved Permanently";
            context.Response.Flush();
        context.Response.End();
        }
    }   
}

Das Modul wird als CS im APP_Code Verzeichnis abgelegt und dann im IIS Manager( man kann’s auch per Web.Config tun) von mir registriert.

image

Für den Test nehme ich die IE9 Developer Tools (F12) und starte die Netzwerkaufzeichung.

image

Kommentar schreiben