Version complète: sur le forum Webmaster Hub : Erreur404 ne prend pas en compte le PHP
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
sarc
Bonjour à tous,

Après des questions à mon hébergeur concernant des problèmes d'erreur 404 personnalisé, il me répond :

CITATION
Sous Apache, il est possible d'avoir ses propres pages d'erreurs.
Pour cela, vous devez créer un fichier .htaccess avec le contenu
suivant, il sera à placé à la racine du répertoire contenant le site
web.
ErrorDocument 400 /errors/badrequest.html
[...]
ErrorDocument 500 /errors/serverr.html

Cependant, les extensions .php ne peuvent être personnalisées par cette
méthode.


C'est au moins la réponse la plus vague que j'ai lue... Le peu de connaissances que j'ai ne m'indiquaient pas qu'une page erreur en PHP ne pouvait marcher... C'est donc seulement chez mon hébergeur ?

Et comment faire pour mon erreur 404 personnalisée ? Je vais pas les renvoyer vers une page HTML, les menus ne seront pas les bons...
Enfin bon, je trouve ça assez spécial comme problème !
Jeanluc
Bonjour,

Je ne vois pas trop en quoi c'est gênant de faire une page 404 personnelle en HTML pur et dur. Si pour certaines anciennes URL, tu souhaites faire un traitement spécial, tu pourrais passer par une redirection 301 (si ton hébergeur l'autorise). Question référencement, ce serait même mieux qu'une 404.

Jean-Luc
Compte supprimé
tu peux aussi, au choix :
- Forcer l'interprétation des pages html
- Faire un coup d'urlrewriting 404.html > 404.php whistling.gif
sarc
JeanLuc, le problème c'est que mes menus sont différents si tu es logué ou pas, et si je veux faire une page 404 avec quand même un menu comme sur les autres pages (parce que c'est, amha, un des buts de l'erreur personnalisée), je dois utiliser le PHP.. Sinon je laisse l'erreur de l'hébergeur, m'enfin, c'est pas le top.

Je vais tester l'url rewriting, j'avoue que j'y avais pas pensé.. Ce serait fort que ça marche quand même ! Je vous tiens au courant.

EDIT : non, en fait j'ai mal cerné le problème et mal expliqué aussi, fatigue je crois...
En fait, quand je vais sur l'adresse :
http://www.monsite.com/nimp.htm
L'erreur 404 personnalisée est prise en compte, et je suis donc renvoyé vers cette page...

Quand je vais sur l'adresse
http://www.monsite.com/nimp.php
Là, elle n'est pas prise en compte et on est renvoyé vers l'erreur de l'hébergeur.

Encore pire, non ?..
Compte supprimé
Là je ne vois pas comment tu va t'en sortir... sick.gif
TheRec
Euh... là effectivement c'est troublant.

En cherchant un peu, il semble que l'hébergeur gratuit Free procède ainsi (ErrorDocument pour .html fonctionne, pour .php ne fonctionne pas. Pourquoi...sûrement pour une bonne raison, et en fait c'est gratuit, alors on demande pas "pourquoi ?" wink.gif). Est-ce que par hasard c'est ton hébergeur ?

Comme l'a dit ton hébergeur :
CITATION
Cependant, les extensions .php ne peuvent être personnalisées par cette
méthode.


La réécriture n'aura aucun effet, à moins que tu veuilles réécrire TOUTES les URL se terminant par ".php", mais dans ce cas-là tu ne pourras pas appeler un script (par une URL) s'il a l'extension ".php". La règle donnerait ceci :
CODE
RewriteEngine On
RewriteRule \.php$ 404.php [L]

Mais cela annihile l'extension ".php" dans tes URL, c'est un choix...peut-être te convient-il. Attention dans le fichier "404.php", il FAUT envoyer l'en-tête d'une erreur 404 :
CODE
header("HTTP/1.1 404 Not Found");

Ceci avant que tout autre caractère ne soit envoyé au navigateur de ton visiteur (n'importe quel caractère, même un retour de ligne)

EDIT: J'ajoute que tu devrais redéfinir ton DirectoryIndex dans ton fichier .htaccess :
CODE
DirectoryIndex index.html index.htm

Ou tout autre page d'index... à condition qu'il ne s'agisse plus d’un fichier avec une extension en ".php", sans que tu seras redirigé vers ta page manu-militari lorsque tu essayeras d'accéder à ta page par http://www.mondomain.com/ (sans préciser le fichier) wink.gif

EDIT2: Évidemment, si Free ne permet pas la réécriture d'URL (ce que Dan dit, donc tu peux le croire wink.gif), tu es dans ce qu'on appelle vulgairement une impasse... et il ne te reste à peu près que tes yeux pour pleurer sur ta page 404.php wink.gif
Dan
Ton hébergeur est Free ? ils ont des serveurs spécifiques pour les pages HTML et les pages PHP.

Dans l'affirmative tu ne peux rien y faire sad.gif

Dan
sarc
Non c'est 1&1, c'est d'autant plus étonnant je dirais... Parce que je pensais avoir payé pour un serveur qui fait même marcher les htaccess correctement wink.gif
J'avais vu que pour Free ça ne marchait pas, mais je ne comprends pas trop pour 1and1...
Compte supprimé
CITATION
En cherchant un peu, il semble que l'hébergeur gratuit Free procède ainsi (ErrorDocument pour .html fonctionne, pour .php ne fonctionne pas.


Non, chez free.fr, le ErrorDocument 404 marche quelle que soit la page non trouvée (je viens de tester), et je m'en sert d'ailleurs pour faire du pseudo-urlrewriting rolleyes.gif.
TheRec
Ok... donc cela à changé depuis 2003 wink.gif On ne sait jamais...comme je n'ai pas pu tester ceci, j'ai bien dit "il semble" ... l'information date un peu, tant mieux si elle ne se vérifie plus.

Effectivement pour 1&1 c'est étonnant, je n'ai pas d'expérience avec eux mais si je me fie aux avis lus sur le Hub ce prestataire me sembl-e(-ais) bon... peut-être que si tu le leur demande, il se justifieront à propos de cette limitation... personnellement je suis sur plusieurs serveur mutualisés (autres prestataires) et aucun ne présente cette limitation.

Bonne chance.
Sammuel
La réponse est donnée ici apparemment :
http://forum.alsacreations.com/topic-1-149...onnaliser-.html
smile.gif
Keroin
Merci Sammuel, ça va me servir aussi ça a_thumbsup_20.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.