Status 404 sinnvoll behandeln

04/03/2009 - 23:40 von Lutz Elßner | Report spam
Wenn die Struktur einer Website geàndert wird und der Umzug (schrittweise)
auf einen neuen Server stattfindet, gibt es viele Links von außen (in Suchmaschinen),
die auf ehemalige Pfade verweisen.

Dafür soll kein 404 Error generiert werden, auch keine verschönerte Error Seite, sondern

- entweder alles auf die Startseite "~/" geleitet werden

- oder im Url der Host ausgetauscht werden, und der Pfad so belassen werden
www.aaa.de/seite1.htm in www.bbb.de/seite1.htm àndern.

Der Client soll in allen Fàllen kein "Not Found" sondern "dauerhaft Moved" bekommen.
Und sich die Seite von der anderen Adresse neu holen, Redirect also.
Das Ziel kann der gleiche oder ein anderer Webserver sein.

An welcher Stelle lassen sich solche fehlenden Seiten abfangen?
- Die CustomErrors-Funktion in web.config reicht irgendwie nicht aus.
- In global.asax scheinen z.B. 404 Fehler gar nicht vorbei zu kommen.

-Einen eigenen Handler schreiben?

Auf jeden Fall sollen auch fehlende htm und classic-asp Seiten Redirected werden.

Also alle Dateien, die fehlen, sollen vom Code behandelt werden können,
der den Client per Redirect wo anders hin schicken kann,
wàhrend die im Web vorhandenen Dateien normal verarbeitet werden.

An welcher Stelle ist da einzugreifen?

Lutz
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
05/03/2009 - 00:03 | Warnen spam
Hallo Lutz,

"Lutz Elßner" schrieb:

- entweder alles auf die Startseite "~/" geleitet werden



das wàre unschön :)

- oder im Url der Host ausgetauscht werden, und der Pfad so belassen werden
www.aaa.de/seite1.htm in www.bbb.de/seite1.htm àndern.



Falls es doch noch etwas "komplizierter" werden könnte, wàre eine Art
UrlRewriting evtl. was für dich. Du fàngst also jeden Request ab,
schaust nach der Regel bzw. dem Umleitungs Url und sendest dann halt
nicht Response.Redirect, sondern Response.Status, ..., damit kannst Du
dann auch eine 301er Weiterleitung durchführen.

http://www.aspcode.net/ASPNET-301-redirect.aspx

An welcher Stelle lassen sich solche fehlenden Seiten abfangen?
- Die CustomErrors-Funktion in web.config reicht irgendwie nicht aus.
- In global.asax scheinen z.B. 404 Fehler gar nicht vorbei zu kommen.



Jein.

Protected Sub Application_BeginRequest( ... )

Dim CurrentRequestPath As String = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath

' Prüfen, ob die angeforderte Datei existiert
If FileExists( CurrentRequestPath ) Then
Exit Sub
End if

' Ermitteln der Umleitungs Url, bzw. Rewriting Regel
...

Response.Status = "..."
...

Response.End()

End Sub

-Einen eigenen Handler schreiben?



Brauchst Du nicht.

Auf jeden Fall sollen auch fehlende htm und classic-asp Seiten Redirected werden.



Dann musst Du HTML und ASP Dateien dieser Anwendung, bzw. Website im IIS einfach
die ASP.NET Engine zuweisen.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen