Htaccess ErrorDocument ne fonctionne pas tout le temps

WRInaute discret
Bonjour à tous

Suite à une demande de mon client suite à un audit externe, il m'a été demandé que lorsqu'une page n'existe pas, de garder l'ancienne url dans le navigateur, et plus l'url 404.html que j'affichais.

J'ai donc rajouté dans le fichier htaccess la ligne suivante :
Code:
ErrorDocument 404 /404.html

Or cette directive ne marche que pour les urls de type https://www.monsite.com/urlfausse et non https://www.monsite.com/urlfausse.html, donc sans le .html à la fin.
J'ai donc dû garder mon code php que j'utilisais et qui testait que si le fichier php n'existait pas alors que je faisais la redirection 301 vers cette page 404.

Pourquoi est ce que ça ne marche pas pour les pages avec un .html ?
 
WRInaute accro
Parce que tu fais une redirection vers la page 404. Du coup on devine qu'elle est servie en 200.
Tu dois servir une 404 avec les pages avec un .html aussi (avec PHP au lieu de la 301).
 
WRInaute accro
Réponse courte: Pour les fichiers.html, au lieu de faire une redirection 301, tu renvoies un header 404 en PHP.
 
WRInaute discret
Actuellement pour les fichiers.html, je mets ce code :

Code:
if(!file_exists("include/pg.{$_PG}.php")){
   header("Status: 301 Moved Permanently", false, 301);
   header("Location: 404.html");
   exit(); 
}

Tu veux que je fasse ça ? :

Code:
if(!file_exists("include/pg.{$_PG}.php")){
header("HTTP/1.x 404 Not Found");
exit();   
}

Attention, j'ai besoin que ce soit une redirection 301
 
Discussions similaires
Haut