Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PHP/Apache : "provoquer" une erreur 404

2 réponses
Avatar
Aurelgadjo
Hello,

Admettons une page de contenu page.php, et sa régle de rewriting. Aprés
rewriting, la page sera accédée par domaine.tld/toto_a_la_plage-450.html .
Dans mon .htaccess, je trouve donc qqchose comme ceci, et ça fonctionne :
RewriteRule ^(.*)-([0-9]+)\.html$ page\.php\?id=$2 [L]

Mon problème est le suivant : le titre de la page est amené à changer et
je dois donc le vérifier (but: ref google, c'est pas moi qui décide). Il
me suffit de prendre en compte le nom de la page ($1) et de voir si en
reconstruisant l'url à partir de ce que j'ai en base, c'est ok.
Cependant, si le titre ne correspond pas, je devrais retourner un code 404.
Ma question est : comment "provoquer une page" 404 ? Elles ne sont pas
personnalisées (pages par défaut d'apache) et je n'ai pas envie de le faire.
Suis-je obligé ? (pour utiliser header() et balancer la 404 ?)

Merci
Aurélien

2 réponses

Avatar
Thibault
On 06 Feb 2009 01:48:26 GMT, Aurelgadjo wrote:
Hello,

Admettons une page de contenu page.php, et sa régle de rewriting. Aprés
rewriting, la page sera accédée par domaine.tld/toto_a_la_plage-450.html .
Dans mon .htaccess, je trouve donc qqchose comme ceci, et ça fonctionne :
RewriteRule ^(.*)-([0-9]+).html$ page.php?id=$2 [L]

Mon problème est le suivant : le titre de la page est amené à changer et
je dois donc le vérifier (but: ref google, c'est pas moi qui décide). Il
me suffit de prendre en compte le nom de la page ($1) et de voir si en
reconstruisant l'url à partir de ce que j'ai en base, c'est ok.
Cependant, si le titre ne correspond pas, je devrais retourner un code 404.
Ma question est : comment "provoquer une page" 404 ? Elles ne sont pas
personnalisées (pages par défaut d'apache) et je n'ai pas envie de le faire.
Suis-je obligé ? (pour utiliser header() et balancer la 404 ?)



Pas sûr d'avoir compris tout le second paragraphe, mais vu ta
réécriture, personnaliser la 404 d'apache ne servira à rien, vu qu'il
aura déjà ré-écrit et appelé ton page.php.

C'est à ce dernier que revient la tâche de retourner la 404,
effectivement en utilisant header() :

header('HTTP/1.1 404 Not Found');
print <<<EOD
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL {$_SERVER['REQUEST_URI']} was not found on this
server.<P>
</BODY></HTML>

EOD;
exit;

Je crois que le body est dans ce cas facultatif, et pour rappel
certains navigateurs ignorent le body (par exemple IE en dessous de 512
octets je crois).
Avatar
Aurelgadjo
Thibault a écrit :
On 06 Feb 2009 01:48:26 GMT, Aurelgadjo wrote:
Hello,

Admettons une page de contenu page.php, et sa régle de rewriting. Aprés
rewriting, la page sera accédée par domaine.tld/toto_a_la_plage-450.html .
Dans mon .htaccess, je trouve donc qqchose comme ceci, et ça fonctionne :
RewriteRule ^(.*)-([0-9]+).html$ page.php?id=$2 [L]

Mon problème est le suivant : le titre de la page est amené à changer et
je dois donc le vérifier (but: ref google, c'est pas moi qui décide). Il
me suffit de prendre en compte le nom de la page ($1) et de voir si en
reconstruisant l'url à partir de ce que j'ai en base, c'est ok.
Cependant, si le titre ne correspond pas, je devrais retourner un code 404.
Ma question est : comment "provoquer une page" 404 ? Elles ne sont pas
personnalisées (pages par défaut d'apache) et je n'ai pas envie de le faire.
Suis-je obligé ? (pour utiliser header() et balancer la 404 ?)



Pas sûr d'avoir compris tout le second paragraphe, mais vu ta
réécriture, personnaliser la 404 d'apache ne servira à rien, vu qu'il
aura déjà ré-écrit et appelé ton page.php.




Tu as répondu à la question ...

C'est à ce dernier que revient la tâche de retourner la 404,
effectivement en utilisant header() :

header('HTTP/1.1 404 Not Found');
print <<<EOD
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL {$_SERVER['REQUEST_URI']} was not found on this
server.<P>
</BODY></HTML>

EOD;
exit;




... et en plus fait mon boulot

Je crois que le body est dans ce cas facultatif, et pour rappel
certains navigateurs ignorent le body (par exemple IE en dessous de 512
octets je crois).



Merci.