Mon .htaccess redirige toutes les demandes /word_here
vers /page.php?name=word_here
. Le script PHP vérifie ensuite si la page demandée est dans son tableau de pages.
Sinon, comment simuler une erreur 404? J'ai essayé cela, mais cela n'a pas entraîné la configuration de ma page 404 via ErrorDocument
l' .htaccess
affichage.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Ai-je raison de penser qu'il est faux de rediriger vers ma page d'erreur 404?
Réponses:
La réponse à jour (à partir de PHP 5.4 ou plus récent) pour générer 404 pages est d'utiliser
http_response_code
:die()
n'est pas strictement nécessaire, mais cela garantit que vous ne poursuivez pas l'exécution normale.la source
Ce que vous faites fonctionnera et le navigateur recevra un code 404. Ce qu'il ne fera pas est d'afficher la page "introuvable" à laquelle vous vous attendez, par exemple:
Pas trouvé
L'URL demandée /test.php n'a pas été trouvée sur ce serveur.
C'est parce que le serveur Web n'envoie pas cette page lorsque PHP renvoie un code 404 (du moins Apache ne le fait pas). PHP est responsable d'envoyer toute sa propre sortie. Donc, si vous voulez une page similaire, vous devrez envoyer le HTML vous-même, par exemple:
Vous pouvez configurer Apache pour utiliser la même page pour ses propres messages 404, en mettant ceci dans httpd.conf:
la source
Essaye ça:
la source
Créer des pages d'erreur personnalisées via le fichier .htaccess
1. 404 - page non trouvée
2. 500 - Erreur de serveur interne
3. 403 - Interdit
4. 400 - Mauvaise demande
5. 401 - Autorisation requise
Vous pouvez également rediriger toutes les erreurs vers une seule page. comme
la source
Avez-vous pensé à mourir () après avoir envoyé l'en-tête? L'en-tête 404 n'arrête pas automatiquement le traitement, il peut donc sembler n'avoir rien fait si un traitement supplémentaire est en cours.
Il n'est pas bon de REDIRECT à votre page 404, mais vous pouvez INCLURE le contenu de celle-ci sans problème. De cette façon, vous avez une page qui envoie correctement un statut 404 à partir de l'URL correcte, mais elle a également votre "que recherchez-vous?" page pour le lecteur humain.
la source
essayez de mettre
dans le
.htaccess
fichier.Faites cela pour toute erreur, mais remplacez 404 par votre erreur.
la source
Dans le CMS Drupal ou Wordpress (et probablement d'autres), si vous essayez de faire en sorte que du code php personnalisé ne semble pas exister (à moins qu'une condition ne soit remplie), ce qui suit fonctionne bien en faisant prendre le relais du gestionnaire 404 du CMS:
la source
Immédiatement après cette ligne, essayez de fermer la réponse en utilisant
exit
oudie()
ou
la source
ErrorDocument
, mais à partir de PHP.ErrorDocument
n'a aucun effet une fois que vous avez déjà saisi le code PHP. cette réponse explique le mieux la confusion à laquelle j'ai fait face il y a 9 ans$reqpath = strtok("/".trim(substr($_SERVER["REQUEST_URI"], strlen(APP_ROOT)), "/"), "?");
dans votre fichier page.php. Parce qu'il y a un scénario où l'une de ces pages attend une requête "nom" de l'utilisateur.essayez ceci une fois.
la source