Zur Navigation

ErrorDocument 404

1 jav666

hallo community,

ich hätte mal folgende Frage:

Ich hab in meiner htaccess u.a. folgendes stehen

ErrorDocument 404 https://www.uri.de/error.php?e=404

und das klappt natürlich.

Auf php-Seite ist dann der Inhalt $_SERVER["HTTP_REFERER"] der Referer, super, aber in SCRIPT_URI steht natürlich nur "error.php?e=404" und nicht die eigentlich Seite, die den 404 erzeugt hat.

Nun wollte ich {HTTP_REFERER} einfach anhängen, an...nur wie?

ErrorDocument 404 https://www.uri.de/error.php?e=404&r={HTTP_REFERER}

ist es ja schon mal nicht.

Oder habe ich einen Denkfehler?

23.03.2017 18:57

2 jav666

also käse. nicht den referer, sondern die uri , welche 404 erzeugt.

23.03.2017 19:09

3 Jörg Kruse

Mit der Direktive ErrorDocument kann man wohl keine Variablen verwenden

Probier mal im PHP-Script $_SERVER["REDIRECT_URL"]

23.03.2017 20:26

4 jav666

hab ich befürchtet. ich habe mir alle $_SERVER-vars anzeigen lassen...da findet sich nix.

ich muss es irgendwie "aus" der htaccess übertragen bekommen.

könnte man das nachbauen? irgendwie?


RewriteRule ..... [L,R=404]

23.03.2017 22:31 | geändert: 23.03.2017 22:31

5 Jörg Kruse

Naja, du könntest weiterleiten:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ https://www.uri.de/error.php?e=404&r=%{REQUEST_URI} [R,L]

... und in error.php ganz am Anfang den Status Code 404 ausgeben:

<?php
if ($_GET['e'] == '404') {
    header("HTTP/1.0 404 Not Found");
}
?>

Du hast dann wie bei der ErrorDocument Direktive oben eine Weiterleitung dazwischen hängen, was nicht optimal ist hinsichtlich SEO. Falls die error.php auf der selben Domain liegt, wäre so etwas besser:

ErrorDocument 404 error-404.php

Dann wird nicht weitergleitet, sondern der Status Code 404 direkt ausgegeben und $_SERVER['REQUEST_URI'] enthält den URI der nicht gefundenen Seite.

24.03.2017 07:41 | geändert: 24.03.2017 07:42

6 jav666

Echt verrückt.

Ich hatte es ja so:

ErrorDocument 404 error-404.php

und das funktionierte nicht (Weißer Screen mit "error-404.php" in der Ecke ).

Mit der kompletten uri fehlte REQUEST_URI wie gesagt, aber

ErrorDocument 404 /error-404.php

funktioniert.

tja, wald <-> bäume.

Danke für Hilfe zur Fehlerfindung. Hintergrund ist, das es gewünscht ist einen täglichen Alert via Mail einzubauen, mit frischen 404-Seiten für einen Shop.

24.03.2017 08:36

7 Jörg Kruse

Stimmt, da war mein Vorschlag noch fehlerhaft: man muss den vollständigen Pfad mit Slash am Anfang angeben; wenn der Slash fehlt, interpretiert der Webserver die Angabe als Fehlermeldung, die dann direkt ausgegeben wird.

24.03.2017 08:48

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]