2015-11-09 1 views
2

J'ai utilisé le code ci-dessous pour créer un message personnalisé 404 (page non trouvée) en utilisant un fichier .htaccess.Comment trouver l'URL de provenance lors de l'utilisation de la redirection htaccess 404?

RewriteEngine On 
ErrorDocument 404 https://%{HTTP_HOST}/404.php 

Cela fonctionne bien, mais je veux savoir quelle était la mauvaise URL qui a causé cette redirection. En d'autres termes, j'ai besoin d'aller chercher référent HTTP alors que l'utilisateur est dans 404.php. J'ai donc utilisé $_SERVER['HTTP_REFERER'] dans 404.php, mais cela ne retourne rien.
Où ai-je eu des erreurs? Et quelles sont vos solutions pour résoudre ce problème?

+0

Ne faites pas confiance à l'en-tête du référent. Certains brouteurs/routeurs/vpns/firewalls effacent réellement l'en-tête référent pour des raisons de confidentialité. –

Répondre

2

Retirer http:// du gestionnaire 404 et ont comme ceci:

ErrorDocument 404 /404.php 

L'URL qui est à l'origine 404 est à votre disposition dans 404.php en utilisant:

$_SERVER["REQUEST_URI"] 

Lorsque http:// ise utilisé dans 404 gestionnaire le serveur effectue la redirection complète et vous perdez REQUEST_URI original.