Discussion:
PHP/Apache : "provoquer" une erreur 404
(trop ancien pour répondre)
Aurelgadjo
2009-02-06 01:48:26 UTC
Permalink
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
Thibault
2009-02-06 08:53:27 UTC
Permalink
Post by 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 .
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).
Aurelgadjo
2009-02-06 22:51:35 UTC
Permalink
Post by Thibault
Post by 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 .
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 ...
Post by Thibault
C'est à ce dernier que revient la tâche de retourner la 404,
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
Post by Thibault
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.

Loading...