Antwort

1

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.

+0

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 –

+0

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