HowTo: Ein HttpModule zum Redirecten nutzen
Folgende Aufgabe: Wenn eine bestimmte Seite im Portal aufgerufen wird, soll der Nutzer auf Seite X umgeleitet werden. Lösungsansatz: HttpModule.
Eigentlich ganz einfach… das HttModule:
public class Redirect : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += new System.EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, System.EventArgs e)
{
if(HttpContext.Current.Request.Url.LocalPath.ToLower() == "/google")
{
HttpContext.Current.Response.Redirect("http://google.de");
}
}
Wir machen ein HttpModule indem wir IHttpModule implementieren.
Wichtig hierbei: “Init” wird beim initialisieren des HttpModules aufgerufen, z.B. wenn beim Applikationsstart. Damit wir ständig bescheid wissen, auf welcher Seite der Nutzer ist, müssen wir ein Eventhandler definieren!
Dieser springt bei mir bei jeden Request an.
Und redirecten…
Jetzt prüfe ich über den HttpContext wo wir uns befinden und wenn wir in der Url z.B. “localhost/google” eingeben, werden wir zu Google weitergeleitet.
Das ganze noch registrieren
Nun müssen wir das noch in der Web.config registrieren (unter httpmodule), z.B. so:
<add name="Redirect" type="Redirect, RedirectModul, Version=1.0.0.0, Culture=neutral"/>
Beschreibung dazu hier.
Eigentlich total easy. Die Geschichte mit dem Eventhandler muss man allerdings wissen







Philip Proplesch
14. October 2009
Hallo,
als kleine Ergänzung würde ich eventuell noch einen Statuscode zurückgeben:
HttpContext.Current.Response.Status = “301 Moved Permanently”;
Ansonsten sehr schön erklärt.
Philip
Andre Loker
14. October 2009
Zu erwähnen wäre noch, dass man in manchen Fällen statt des standard 302-Redirects einen 301 machen möchte (“Moved Permanently”), um z.B. den Suchmaschinen klar zu machen, dass eine bestimmte Seite jetzt und immer woanders zu finden ist:
Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
Response.RedirectLocation = “http://google.de”;
(Statt HttpStatusCode.MovedPermanently geht natürlich auch einfach 301)