web-dev-qa-db-fra.com

Nginx 404 ne fonctionne pas avec PHP?

J'ai un fichier 404 et cela fonctionne avec nginx. Cependant, lorsque je modifie le fichier 404 pour rediriger l'utilisateur, il ne le fait pas.

visiter http://site.com/404.php redirige l'utilisateur.

visiter http://site.com/askllj299lakj n'est qu'une page blanche.

Le code dans le fichier 404 est juste une redirection d’en-tête,

<?php
header('Location: http://site.com/');
exit;
?>

Pourquoi cela ne fonctionne-t-il pas avec nginx?

1
Kyle

Une redirection est par définition un code d’en-tête 302 qui entraînera une nouvelle requête. Les pages d'erreur 404 ne doivent jamais être redirigées nulle part, car elles constituent un code de fin de ligne. En outre, si vous devez faire cela et rediriger l'utilisateur vers la page d'accueil avec une erreur 404, ce qui causera ultérieurement toutes sortes de problèmes, les moteurs de recherche traiteront votre page d'accueil comme une page d'erreur 404 non trouvée.

Au lieu de rediriger vers la page d’accueil dans cette affaire, créez une page HTML standard indiquant que la page recherchée par l’utilisateur était introuvable sur le serveur (vous pouvez y jouer et le rendre humoristique si votre le site Web est approprié pour cela). Sur cette page HTML, rien ne vous empêche de rediriger l'utilisateur vers la page d'accueil à l'aide de ...

<meta http-equiv="refresh" content="3;url=http://www.domain.com" />

Ce qui redirigera l'utilisateur vers la page d'accueil après 3 secondes. Cela indique à l'utilisateur final que la page recherchée est introuvable et redirige l'utilisateur vers la page d'accueil. Il est conforme à toutes les normes et ne cause aucun problème ultérieur.

1
Chris Rutherfurd