REQUEST_URI bei 404 ist die der Fehlermeldung
Jens Kleine
- php
0 MudGuard0 Jens Kleine0 MudGuard
0 Stefan Bechtold
Moin,
ich komme gerade absolut nicht weiter. Ich wollte meine Fehlermeldungen ein wenig anpassen und Abkürzungen zu Unterseiten einbauen.
In meinem root-Verzeichnis liegt eine .htaccess unter anderem mit:
ErrorDocument 404 /errors/404.php
Tritt nun ein 404er auf, wird auch brav die 404.php aufgerufen und dort bekomme ich mit echo $_SERVER['REQUEST_URI'] die URL angezeigt, zu der der Nutzer hin wollte. Alles schön und gut.
Nun habe ich jedoch mehrere Domains. Eine an der ich gerade arbeite, verweisst auf einen Unterordner. Dort gibt es ebenfalls einen Ordner /errors/ mit der Datei 404.php (und für ein paar Minuten hat es so seltsamerweise funktioniert...) und eine weitere .htaccess.
Schreibe ich in diese:
ErrorDocument 404 /errors/404.php
Kommt die Standard-404er des Browsers, schreibe ich
ErrorDocument 404 /unterverzeichnis/errors/404.php
ebenfalls, schreibe ich
ErrorDocument 404 http://www.zweitedomain.de/errors/404.php
geht es (natürlich), jedoch hat nun die $_SERVER['REQUEST_URI'] den Wert /errors/404.php mit dem ich nicht gerade gut weiterarbeiten kann...
Was mache ich falsch oder geht gewünschtes gar nicht (in dem Fall die Frage: Kann ich in der .htaccess schon die REQUEST_URI irgendwie anfassen und z.b. den request auf /errors/404.php?URI=REQUEST_URI umleiten?)?
Hi,
Schreibe ich in diese:
ErrorDocument 404 /errors/404.php
Kommt die Standard-404er des Browsers, schreibe ich
ErrorDocument 404 /unterverzeichnis/errors/404.php
ebenfalls, schreibe ich
ErrorDocument 404 http://www.zweitedomain.de/errors/404.php
geht es (natürlich), jedoch hat nun die $_SERVER['REQUEST_URI'] den Wert /errors/404.php mit dem ich nicht gerade gut weiterarbeiten kann...
Was mache ich falsch oder geht gewünschtes gar nicht (in dem Fall die Frage: Kann ich in der .htaccess schon die REQUEST_URI irgendwie anfassen und z.b. den request auf /errors/404.php?URI=REQUEST_URI umleiten?)?
Lies Dir die Doku zu ErrorDocument durch, da steht drin, warum das so ist.
cu,
Andreas
Lies Dir die Doku zu ErrorDocument durch, da steht drin, warum das so ist.
Also in der auf apache.org steht es nicht... Hast du vielleicht einen Link zu einer anderen/besseren in der es steht?
Und: Würde mir das bei meinem eigentlichen Problem weiterhelfen?
Hi,
Lies Dir die Doku zu ErrorDocument durch, da steht drin, warum das so ist.
Also in der auf apache.org steht es nicht...
Doch, da steht es:
Note that when you specify an ErrorDocument that points to a remote URL (ie. anything with a method such as http in front of it), Apache will send a redirect to the client to tell it where to find the document, even if the document ends up being on the same server. This has several implications, the most important being that the client will not receive the original error status code, but instead will receive a redirect status code. This in turn can confuse web robots and other clients which try to determine if a URL is valid using the status code.
Nachzulesen unter http://httpd.apache.org/docs-2.0/mod/core.html#errordocument für den 2.0er Apache und unter http://httpd.apache.org/docs/mod/core.html#errordocument für den 1.3er Apache.
Ach ja, wenn Dein Browser so konfiguriert ist, Fehler-Dokumente des Servers zu ignorieren, kann der Server natürlich nichts machen...
cu,
Andreas
Ach ja, wenn Dein Browser so konfiguriert ist, Fehler-Dokumente des Servers zu ignorieren, kann der Server natürlich nichts machen...
Danke, gerade in der Doku zu 2.0 den Hinweis entdeckt, dass der IE Fehlermeldungen ignoriert, wenn sie zu kurz sind. Das hatte mich heute morgen in die Verzweiflung getrieben, weil ich nicht verstand, warum bei Änderungen in der Fehlerseite die Fehlerseite (z.b. nur ein/zwei Variablen ausgeben) manchmal plötzlich nicht mehr erschien... MS sei dank...
Was mache ich falsch oder geht gewünschtes gar nicht (in dem Fall die Frage: Kann ich in der .htaccess schon die REQUEST_URI irgendwie anfassen und z.b. den request auf /errors/404.php?URI=REQUEST_URI umleiten?)?
Ich glaube kaum, dass du etwas falsch machst ... hast du den Server mal neu gestartet? vielleicht sind noch "Leichen" im Cache...
Die Angabe muss meiner Meinung nach auf jeden fall mit
/unterverzeichnis/errors/404.php
erfolgen, wobei das erste / ja fuer die Root Ebene steht, was auch erklaert warum /errors/404.php die Meldung der anderen Site ausgibt.
Seltsames ding ;o)
Restart -> Retry -> Repost :o)
Ich glaube kaum, dass du etwas falsch machst ... hast du den Server mal neu gestartet?
Nein, kann ich auch nicht, ist nicht meiner, sind noch mehr Seiten andere Leute drauf. Aber laut Doku sollte für Änderungen der .htaccess kein Neustart nötig sein... (sollte, beim Testen habe ich inzwischen andere Dinge bemerkt, aber es sollte...)
Joa, das mit dem SOLLEN und HABEN ist immer so eine Sache ;o)
Wir reden ueber Computer und Server, wo beides nicht dazu geschaffen wurde so zu funktionieren, wie wir wollen, damit wir immer Arbeit haben und niemals arbeitslos werden *g*
Klappts denn jetzt??
Klappts denn jetzt??
Nein, ich komme wirklich nur auf die gewünschte Fehlerseite, wenn ich die komplette URL samt http:// angebe...
das ist assisch =:o)
MudGuard hat uebrigens gar keine AHNUNG der schreibt immer nur in der Doku nachlesen ;o) bestimmt so ein personifizierter Bot *fg*
Aber ich bin nun auch am ende meiner Logik... Ruf mal den Support von Apache an *sfg* (wenn du die Nummer hast will ich sie auch) ():-)
Sorry, dass ich nicht helfen kann, aber Spass muss sein :o)
Gruesse
Stefan
Gerade was interessantes bemerkt: Wenn ich relative URLs in der .htaccess im Unterverzeichnis angebe funktioniert alles wie gewünscht für den unwahrscheinlichen Fall, dass das nicht vorhandene Dokument zufällig der Name eines vorhandenen Ordners ist und kein / dahinter steht...