|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 3 ![]() |
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. |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : août 2005 Messages : 8 278 ![]() |
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
|
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : février 2011 Messages : 3 ![]() |
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] 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 :
Merci beaucoup. Simdou. |
||
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : août 2005 Messages : 8 278 ![]() |
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
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 3 ![]() |
Merci à toi, je vais essayer ça après mes vacances
Je te tiens au courant... A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com