Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/02/2011, 18h06   #1
Invité de passage
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : 0
Points : 0
Par défaut [URL rewriting] problème redirection 404

Bonjour a tous et merci d'avance à ceux qui vont prendre le temps de m'aider,

Alors voila, je suis en stage et mon patron m'a demander de résoudre un problème qui est présent depuis des lustres sur le site, le problème est le suivant :

Les URL rewriting fonctionnent très bien mais simplement lorsque l'on met une URL avec une sous catégorie erronée du style :

http://domaine/dossier/Categorie/Sou...orie(erronée)/, Apache renvoie HTTP 200 alors qu'il devrait renvoyer HTTP 404

Et le plus étrange est que avec cette URL il renvoie bien une erreur 404 (sans le / de la fin):

http://domaine/dossier/Categorie/Souscategorie(erronée)

Je ne connais rien en URL rewriting donc c'est pour ça que je vous demande de l'aide svp...

Merci d'avance.
simdou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 22h27   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
Ca serait quand même pas mal d'avoir les règles de réécriture pour pouvoir t'aider, en fait
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 10h32   #3
Invité de passage
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : 0
Points : 0
Par défaut details

Ben en fait mon fichier fait plus de 1000 lignes et c'est pas moi qui l'ai écris donc j'y comprends pas grand chose...

Mais d'après ce que j'ai compris je pense que ceci pourrais t'aider :

Code :
RewriteRule ^([&A-Za-z0-9\s-]*)/([&A-Za-z0-9\s-]*)/([&A-Za-z0-9\'\(\)\s-'"]*)/$ /dossier1/dossier2/fichier.php?premierid=$1&secondid=$2&troisiemeId=$3 [L]
cela correspond à la réécriture qui m'intéresse...

Mais c'est quand même bizarre que juste pour un "/" il me renvoi pas la bonne réponse HTTP...

Par contre je viens de voir que je n'ai pas de :

Code :
1
2
3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /error.php [L]
dans mon htaccess... peut être que c'est du à ça non ?

Merci beaucoup.
Simdou.
simdou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 13h33   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
Bah oui, c'est logique : ce n'est pas Apache qui sait que /dossier/Categorie/Souscategorie(erron%C3%A9e)/ n'existe pas. Tout ce que fait Apache c'est identifier des masques et appliquer bêtement une réécriture. Pour cette URL précise, Apache utilise bien l'URL que tu donnes et donc appelle au final /dossier1/dossier2/fichier.php?premierid=dossier&secondid=Categorie&troisiemeId=Souscategorie(erron%C3%A9e). Cette URL fonctionne, Apache est content, il a fait son boulot. Que derrière, le paramètre troisiemeId n'ait pas une valeur valide, ce n'est pas son problème, c'est le problème du fichier.php : fichier.php doit vérifier et valider les paramètres qu'on lui envoie avant de faire quoi que ce soit. Si l'un des paramètres ne lui plaît pas, c'est à lui de le dire et d'une certaine manière : 404 par exemple. Mais c'est à fichier.php de traiter ce cas, pas Apache. Car si tu veux que ce soit Apache qui s'en occupe, ce n'est pas 1000 lignes que fera ton .htaccess mais plusieurs centaines de milliers

Moralité : ajoute des tests de validation à fichier.php tout en haut (avant la première balise HTML) pour faire header("404 Not Found").

Pour info, ça sort directement une erreur 404 sans le / car aucune règle de réécriture ne correspond à ce cas, et donc là, c'est vraiment Apache qui sort l'erreur 404 car il ne trouve rien qui correspond à ce qu'on lui demande.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 13h12   #5
Invité de passage
 
Inscription : février 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 3
Points : 0
Points : 0
Par défaut merci

Merci à toi, je vais essayer ça après mes vacances bien méritées!
Je te tiens au courant...
A+
simdou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h42.


 
 
 
 
Partenaires

Hébergement Web