Anstelle der Verwendung von Errordocument in der .htaccess-Konfiguration, könnten Sie eine echte Umleitung auf die error.php wie diese zwingen:
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /error.php?pg-name=%{REQUEST_FILENAME} [L]
Quelle: How to get `$_POST` query when 404 redirected through .htaccess?
In der error.php Seite können Sie dann überprüfen, ob die pg-name-Parameter an die error.php gegeben:
echo '<pre>';
print_r($_GET);
echo '</pre>';
Wenn Sie Sie Seite nennen dies wie: http://domain1.com/asdasdasd (ist die Verbindung unter der Annahme nicht gefunden), wird die Ausgabe von dem error.php wie folgt aussehen:
Array
(
[pg-name] => /path_to/public_html/asdasdasd
)
Dann können Sie auf die gewünschte Zeichenfolge „asdasdasd“ erhalten.
Ich bin mit diesem RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule^(. +) $ /404.php?pg-name=$1 [L, R] aber Das Problem ist, dass Header nicht auf 404 gesetzt wird, sondern der Header auf 302 –
gesetzt wird, "erzwinge eine echte Weiterleitung" - Beachte, dass dies ein _internes Rewrite_ ist, kein _externes "Redirect_ _. Das ist gut, Sie wollen die Anfrage nicht "umleiten" ("R" -Flag auf der "RewriteRule"), sonst wird dem Benutzer ein 3xx-Status gesendet. Sie müssen jedoch den entsprechenden HTTP-Statuscode 404 in 'error.php' manuell festlegen. – MrWhite