Title: Individuelle Fehlermeldungen

Der Webmaster kann mit zusätzlichen Funktionen die Antworten des Apache bei Fehlern oder beim Auftreten von Problemen konfigurieren.

Es können individuelle Antworten festgelegt werden, für den Fall, dass der Server Fehler oder Probleme erkennt.

Stürzt ein Skript mit der Fehlermeldung 500 Server Error ab, kann diese Meldung entweder durch einen aussagekräftigeren Text oder durch eine Umleitung zu einer anderen URL (lokal oder extern) ersetzt werden.

Verhalten
Altes Verhalten

Ein HTTPD 1.3 NSCA-Server würde eine herkömmliche Fehlermeldung liefern, die für den Benutzer oft nichts sagend ist und böte keine Möglichkeit, die Ursachen zu protokollieren.

Neues Verhalten

Der Server kann aufgefordert werden:

  1. einen anderen Text anstelle der fest codierten NCSA-Meldungen anzuzeigen oder
  2. eine Umleitung zu einer lokalen URL vorzunehmen oder
  3. reine Umleitung zu einer externen URL vorzunehmen.

Die Umleitung zu einer anderen URL kann sinnvoll sein, allerdings nur, wenn Informationen übergeben werden können, mit denen dann der Fehler oder das Problem erklärt und/oder protokolliert werden können.

Hierfür definiert der Apache neue Umgebungsvariablen, die mit CGI-Variablen vergleichbar sind:

REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap, image/jpeg
REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05 9000/712)
REDIRECT_PATH=.:/bin:/usr/local/bin:/etc
REDIRECT_QUERY_STRING=
REDIRECT_REMOTE_ADDR=121.345.78.123
REDIRECT_REMOTE_HOST=ooh.ahhh.com
REDIRECT_SERVER_NAME=crash.bang.edu
REDIRECT_SERVER_PORT=80
REDIRECT_SERVER_SOFTWARE=Apache/0.8.15
REDIRECT_URL=/cgi-bin/buggy.pl

Beachten Sie das Präfix REDIRECT_.

Mindestens REDIRECT_URL und REDIRECT_QUERY_STRING werden der neuen URL übergeben (vorausgesetzt es handelt sich um ein CGI-Skript oder ein CGI-Include). Die anderen Variablen sind nur vorhanden, wenn sie vor dem Auftreten des Fehlers oder Problems bereits vorhanden waren. Keine von ihnen wird gesetzt, wenn die Direktive ErrorDocument eine externe Umleitung angibt (alles, was mit einem Schemennamen wie http: beginnt, selbst wenn auf den gleichen Host wie den Server verwiesen wird).

Konfiguration

Die Verwendung von ErrorDocument für .htaccess-Dateien ist aktiviert, wenn AllowOverride entsprechend gesetzt ist.

Einige Beispiel...

ErrorDocument 500 /cgi-bin/crash-recover
ErrorDocument 500 "Sorry, our script crashed. Oh dear"
ErrorDocument 500 http://xxx/
ErrorDocument 404 /Lame_excuses/not_found.html
ErrorDocument 401 /Subscription/how_to_subscribe.html

Die Syntax ist:

ErrorDocument <3-digit-code> <action>

Die Aktion kann sein:

  1. Es wird Text angezeigt. Dem Text werden doppelte Anführungszeichen " vorangestellt. Alles was folgt, wird angezeigt. Das Präfix " wird nicht angezeigt.
  2. Umleitung zu einer externen URL.
  3. Umleitung zu einer internen URL.
Individuelle Fehlermeldungen und Umleitungen

Das Verhalten des Apache bei umgeleiteten URLs wurde so modifiziert, dass zusätzliche Umgebungsvariablen für ein Skript oder Server-Include vorhanden sind.

Altes Verhalten

Standardmäßige CGI-Variablen wurden für ein Skript zur Verfügung gestellt, das umgeleitet wurde. Ein Hinweis, woher die Umleitung kam, wurde nicht geliefert.

Neues Verhalten

Es wird ein Stapel neuer Umgebungsvariablen für ein Skript bereitgestellt, das umgeleitet wurde. Jede Variable hat das Präfix REDIRECT_. Die REDIRECT_ Umgebungsvariablen werden aus den CGI-Umgebungsvariablen erzeugt, die vor der Umleitung vorhanden waren. Sie erhalten das Präfix REDIRECT_, d.h., aus HTTP_USER_AGENT wird REDIRECT_HTTP_USER_AGENT. Neben diesen neuen Variablen definiert der Apache REDIRECT_URL und REDIRECT_STATUS, damit das Skript seine Herkunft zurückverfolgen kann. Sowohl die ursprüngliche URL als auch die Umleitungs-URL können im Zugriffsprotokoll aufgezeichnet werden.

Gibt ErrorDocument eine lokale Umleitung zu einem CGI-Skript an, dann sollte das Skript das Header-Feld Status: in seinen Ausgaben enthalten, damit ein Weiterreichen den ganzen Weg zurück zum Client, der den Fehler ausgelöst hat, gewährleistet ist. Ein Perl ErrorDocument-Skript kann beispielsweise die Anweisungen enthalten:

...
print "Content-type: text/html\n";
printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
...

Soll das Skript einen bestimmten Fehler behandeln, beispielsweise 404 Not Found, kann es statt dessen den entsprechenden Kode und Text verwenden.

Beachten Sie, dass das Skript einen entsprechenden Status:-Header senden muss (z.B. 302 Found), wenn die Antwort einen Location:-Header enthält (um eine Umleitung seitens des Clients auszulösen), sonst hat der Location:-Header unter Umständen keine Wirkung.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to