Christian L.: ErrorDocument 401 und header ( Location:...

Hallo,

folgendes Problem:
Ich habe ein .htaccess File mit folgenden Fehlerseiten erstellt.

ErrorDocument 401 /fehler.php?ERROR=401
ErrorDocument 404 /fehler.php?ERROR=404

Das PHP der Seite fehler.php sieht folgendermaßen aus:

<?php
header("Location: "/fehler2.php?ERROR=$ERROR&URL=$SERVER_NAME$REQUEST_URI");
?>

Leider klappt das ganze nicht bei 401 Fehlern. Anstatt das Authentifizierungs-Fensters zu öffnen wird einfach sofort auf die Fehlerseite weitergeleitet.

Was ich dabei nicht ganz verstehe ist, dass bei einer HTTP-Authentifizierung scheinbar immer zuerst das definierte ErrorDocument 401 geparst wird. Oder sehe ich das falsch?

Noch zue Erklährung warum ich das so 'umständlich' mache und nicht gleich 'ErrorDocument 401 /fehler2.php?ERROR=$ERROR' verwende:
Es liegt einfach daran, dass ich keine absoluten Pfade für Links und Bilder auf der Fehlerseite verwenden kann.

Ciao
Christian

  1. Hi,

    header("Location: "/fehler2.php?ERROR=$ERROR&URL=$SERVER_NAME$REQUEST_URI");

    bitte nicht schon wieder. Es wurde in diesem Forum bereits x-mal erklärt, warum hier eine absolute URL unerlässlich und alles andere falsch ist. Der Grund, warum ein Status 401 nicht mit absoluten URLs kompatibel ist, ist ebenfalls im Archiv recherchierbar; er hat zu einer sehr deutlichen Mitteilung in der Apache-Dokumentation der ErrorDocument-Direktive geführt.

    Was ich dabei nicht ganz verstehe ist, dass bei einer HTTP-Authentifizierung scheinbar immer zuerst das definierte ErrorDocument 401 geparst wird. Oder sehe ich das falsch?

    Ja. Dies erzeugt dann einen Redirect, welcher sowieso einen 300er-Status besitzt.

    Es liegt einfach daran, dass ich keine absoluten Pfade für Links und Bilder auf der Fehlerseite verwenden kann.

    Das verstehe ich zwar nicht, aber ich glaube trotzdem nicht, dass sich dadurch ein Redirect rechtfertigen lässt. Deine serverseitige Technik liefert hinreichend viele alternative Möglichkeiten; von der Serverkonfiguration bis zu Includes.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo,

      bitte nicht schon wieder. Es wurde in diesem Forum bereits x-mal erklärt, warum hier eine absolute URL unerlässlich und alles andere falsch ist. Der Grund, warum ein Status 401 nicht mit absoluten URLs kompatibel ist, ist ebenfalls im Archiv recherchierbar; er hat zu einer sehr deutlichen Mitteilung in der Apache-Dokumentation der ErrorDocument-Direktive geführt.

      Bisher habe ich leider nichts im Archiv gefunden. Hast du einen Link? Habe mir bei der Suche wirklich Mühe gegeben.

      Ciao
      Christian

      1. Hi,

        Bisher habe ich leider nichts im Archiv gefunden. Hast du einen Link? Habe mir bei der Suche wirklich Mühe gegeben.

        http://selfsuche.teamone.de/cgi-bin/hack.cgi?suchausdruck=Location+absolute+URL&case=on&lang=on&feld=alle&index_5=on&hits=100
        http://selfsuche.teamone.de/cgi-bin/hack.cgi?suchausdruck=ErrorDocument+401+absolute+URL&case=on&lang=on&feld=alle&index_5=on&hits=100

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. So, jetzt hatte ich mal bischen Zeit...

          http://selfsuche.teamone.de/cgi-bin/hack.cgi?suchausdruck=Location+absolute+URL&case=on&lang=on&feld=alle&index_5=on&hits=100
          http://selfsuche.teamone.de/cgi-bin/hack.cgi?suchausdruck=ErrorDocument+401+absolute+URL&case=on&lang=on&feld=alle&index_5=on&hits=100

          Leider war da nicht das dabei, nach dem ich gesucht habe, doch der Artikel http://forum.de.selfhtml.org/archiv/2002/3/6398/ gab mir die Antwort zu meinem Problem.

          Was würde nun theoretisch passieren, wenn man mit dem anzuzeigenden Dokument, auf das die header(Location: ) zeigt, die beiden folgenden header mitsenden würde?

          header("HTTP/1.0 401 Authorization Required");
          header("WWW-Authenticate: Basic realm="example"");

          Wird wohl auch nicht zum Ziel führen, sondern eher in eine Endlosschleife?

          Ciao
          Christian