Aller au contenu

Sujets conseillés

Posté (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} !-f
RewriteCond %{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é par Jeanluc
Ne pas oublier les balises [code]...[/code]
Posté

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

Posté

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]

Posté

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 :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...