Redirection 404 en PHP

WRInaute passionné
Bonjour,

Sur ma boutique en ligne, je fais de l'URL rewriting et j'aimerais renvoyer ma page 404 en cas de produit supprimé.

J'ai donc mis ce code au début de mon fichier PHP.

$numRows = nombre de lignes retournée par la requêtes SQL en utilisant l'ID du produit présent dans l'URL

PHP:
<span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$numRows </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">     header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Status: 404 Not Found"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">false</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">404</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">     include</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"/404.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">     exit</span><span class="syntaxkeyword">();<br />}</span><span class="syntaxdefault"> </span>

J'en suis arrivé à ce code en cherchant partout sur le forum et dans les dossiers mais ça ne fonctionne pas !

On obtient bien un code 404 mais la page reste blanche. J'aimerais afficher ma page d'erreur 404 à la place

Merci
 
WRInaute passionné
Merci beaucoup Salva, j'ai cru que je ne m'en sortirais jamais ! Vraiment compliquée cette histoire...

J'ai donc remplacer mon code par :
PHP:
<span class="syntaxdefault"></span><span class="syntaxkeyword">if&nbsp;(</span><span class="syntaxdefault">$numRows&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"HTTP/1.1&nbsp;404&nbsp;Not&nbsp;Found"</span><span class="syntaxkeyword">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxdefault">file_get_contents</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"404.php"</span><span class="syntaxkeyword">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit();<br />}&nbsp;</span><span class="syntaxdefault"></span>
J'ai bien le code d'erreur 404 mais je crois qu'il y a un problème avec file_get_contents: cela ne me renvoie que le contenu HTML présent dans le fichier. Dans ma page 404.php j'ai des include (header, footer..) et ils ne sont pas éxécutés.

J'ai essayé de remplacer par include("/404.php"); mais je n'ai qu'une page blanche :(
 
WRInaute passionné
Twingo ! Je me coucherai moins bête ce soir :

- si on met file_get_contents("404.php") : la fonction retourne le contenu du fichier dans une chaine de caractère
- si on met file_get_contents("http://www.example.com/404.php") : la fonction retourne le contenu du fichier dans une chaine de caractère une fois le protocole http exécuté, donc mon code PHP :)

Merci encore Salva je n'avais pas trouvé ce topic et je ne serai jamais allé voir du coté de cette fonction, tu as sauvé ma journée :)
 
WRInaute accro
Page blanche en PHP: 99% de chances que c'est une erreur qui se produit avec display_errors à Off.
 
Discussions similaires
Haut