Aller au contenu

Sujets conseillés

Posté (modifié)

Je viens de reprendre ce code (qui permet: disque.php?var1=valeur1&var2=valeur2&...&varN=valeurN ) dans un htaccess :

RewriteEngine on
RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.html $1$2&$3=$4$5\.html [N]
RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.html $1.php?$2=$3$4 [L]
RewriteRule ^(.*).html $1.php [L]

Je passe la page: www.monsite.com/45/disque-rub-7.html

Ca me retoune une erreur 404 et je ne comprend pas pourquoi.

Le htaccess est bien dans le dossier 45

D'où cela peut-il venir?

Merci beaucoup

Modifié par Dan
Posté

Bonjour,

Tu as probablement voulu adapter les dernier paragraphe de l'article La réécriture d'URL récursive mais n'a pas fait attention au premier terme....

L'exemple donné est:

RewriteRule (.+)-([^-]+)-([^-&]*)([^-]*)\.html $1&$2=$3$4\.html [N]

RewriteRule ([^-]+)-([^-]*)(.*)\.html program.php?$1=$2$3 [L]

et le fait de rajouter un (.*) devant la deuxième expression fait que cette partie va "dévorer" plus de caractères que nécessaire. Le . vaut pour n'importe quel caractère, y compris le tiret de séparation.

Il vaut mieux mettre ([^-]+) à la place ;)

Dan

Posté

salut Dan

tu veux dire ceci:

RewriteRule (.+)-([^-]+)-([^-&]*)([^-]*)\.html $1&$2=$3$4\.html [N] 
RewriteRule ([^-]+)-([^-]*)([^-]+)\.html disque.php?$1=$2$3 [L]

je passe donc la page: www.monsite.com/45/disque-rub-7.html

tjs cette erreur 404

Posté

Non, pas celle là... plutôt ceci :

RewriteRule ([^-]+)-([^-]+)-([^-]*)(.*)\.html $1.php?$2=$3$4 [L]

Supprime la première règle pour voir si celle-ci passe... tu n'as qu'une variable de toutes manières.

Posté

nikel Dan g reussi a me dépatouiller de tout ca

reste un souci majeur: comment gérer une ancre de lien ds un fichier htaccess ? car etant donné que c est un #, il me l'interprète comme commentaire

merci

Posté
reste un souci majeur: comment gérer une ancre de lien ds un fichier htaccess ? car etant donné que c est un #, il me l'interprète comme commentaire

Tu dois pouvoir enlever l'interprétation du # en le faisant précéder d'un backslash... mais j'ai quelques doutes tout de même.

Veuillez vous connecter pour commenter

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



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