oxomichael Posté 12 Janvier 2009 Posté 12 Janvier 2009 (modifié) J'ai une réécriture d'URL qui semble fonctionner en local sur apache 2.2 Le site est hébergé sur un apache 1.3 Voilà mon htaccess RewriteCond %{REQUEST_URI} !^(.*)/admin/.* RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.html$ caracteristique.php?caracdisp_txt=$1 [NC,QSA,L]RewriteRule ^(.*)/(.*)\.html$ produit.php?caracdisp_txt=$1&produit_txt=$2 [NC,QSA,L]RewriteRule ^([a-z0-9-]*)__([0-9]*)_([a-z0-9-]*)_([0-9]*)\.html$ contenu.php?id_contenu=$4 [NC,QSA,L] Le problème est que mes variables ne sont pas toujours rempli caracdisp_txt peut ne rien renvoyer Dans mes url je supprimer tous les caractères spéciaux, etc, etc Je sais pas ce qui peut clocher, je suis perdu Modifié 12 Janvier 2009 par Jeanluc Ne pas oublier les balises [code]...[/code]
Jeanluc Posté 12 Janvier 2009 Posté 12 Janvier 2009 Bonjour et bienvenue, La condition ^(.*)/(.*)\.html$ ne sera jamais vraie, car elle n'est qu'un cas particulier de ^(.*)\.html$. Idem pour la dernière ligne. Jean-Luc
Martoclou Posté 13 Janvier 2009 Posté 13 Janvier 2009 Les règles sont lues dans l'ordre, et le L à la fin indique que dès qu'une condition est remplie, on passe toutes les suivantes. Autrement dit, à ta place, je mettrais RewriteRule ^(.*)\.html$ caracteristique.php?caracdisp_txt=$1 [NC,QSA,L] à la fin Et pour être sûr que les règles ne se font pas concurrence , au lieu de : RewriteRule ^(.*)/(.*)\.html$ produit.php?caracdisp_txt=$1&produit_txt=$2 [NC,QSA,L] j'écrirais RewriteRule ^([^/]+)/([^/]+)\.html$ produit.php?caracdisp_txt=$1&produit_txt=$2 [NC,QSA,L]
Dan Posté 13 Janvier 2009 Posté 13 Janvier 2009 Il te suffit simplement d'inverser l'ordre des règles, en mettant la plus restrictive au début. Donc pour toi, dans l'ordre 3, 2, 1 au lieu de 1, 2, 3
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant