Mon .htaccess redirige toutes les demandes de /Word_here
vers /page.php?name=Word_here
. Le script PHP vérifie ensuite si la page demandée se trouve dans son tableau de pages.
Sinon, comment puis-je simuler une erreur 404? Je l'ai essayée, mais ma page 404 n'a pas été configurée via ErrorDocument
dans le .htaccess
.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Ai-je raison de penser qu'il est erroné de rediriger vers ma page d'erreur 404?
La réponse à jour (à partir de PHP 5.4 ou plus récent) pour générer 404 pages consiste à utiliser http_response_code
:
<?php
http_response_code(404);
include('my_404.php'); // provide your own HTML for the error page
die();
die()
n'est pas strictement nécessaire, mais il garantit que vous ne poursuivez pas l'exécution normale.
Ce que vous ferez fonctionnera, et le navigateur recevra un code 404. Ce que ne veut pas faire, c’est d’afficher la page "introuvable" à laquelle vous pourriez vous attendre, par exemple:
L'URL demandée /test.php est introuvable sur ce serveur.
En effet, le serveur Web n'envoie pas cette page lorsque PHP renvoie un code 404 (du moins Apache). PHP est responsable de l'envoi de ses propres sorties. Donc, si vous voulez une page similaire, vous devrez envoyer le code HTML vous-même, par exemple:
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
include("notFound.php");
?>
Vous pouvez configurer Apache pour utiliser la même page pour ses propres messages 404, en mettant ceci dans httpd.conf:
ErrorDocument 404 /notFound.php
Essaye ça:
<?php
header("HTTP/1.0 404 Not Found");
?>
Créer des pages d'erreur personnalisées via le fichier .htaccess
1. 404 - page non trouvée
RewriteEngine On
ErrorDocument 404 /404.html
2. 500 - Erreur serveur interne
RewriteEngine On
ErrorDocument 500 /500.html
3. 403 - Interdit
RewriteEngine On
ErrorDocument 403 /403.html
4. 400 - Mauvaise demande
RewriteEngine On
ErrorDocument 400 /400.html
5. 401 - Autorisation requise
RewriteEngine On
ErrorDocument 401 /401.html
Vous pouvez également rediriger toutes les erreurs sur une seule page. comme
RewriteEngine On
ErrorDocument 404 /404.html
ErrorDocument 500 /404.html
ErrorDocument 403 /404.html
ErrorDocument 400 /404.html
ErrorDocument 401 /401.html
Vous êtes-vous souvenu de mourir () après l'envoi de l'en-tête? L'en-tête 404 n'interrompt pas automatiquement le traitement. Il peut donc sembler que rien n'a été fait si d'autres traitements sont en cours.
REDIRECTION de votre page 404 n’est pas bon, 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 "Qu'est-ce que vous cherchez?" page pour le lecteur humain.
essayez de mettre
ErrorDocument 404 /(root directory)/(error file)
dans le fichier .htaccess
.
Faites cela pour toute erreur, mais remplacez 404 par votre erreur.
Dans Wordpress, si vous essayez de faire en sorte que du code php personnalisé semble ne pas exister (à moins qu'une condition ne soit remplie), les opérations suivantes fonctionnent bien en faisant en sorte que le gestionnaire standard Wordpress 404 prenne le relais:
<?php
if(condition){
do stuff;
} else {
include('index.php');
}
?>