Version complète: sur le forum Webmaster Hub : La réécriture à la volée
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
xpatval
Bonjour,soir,

Je me plante lors d'un rewrite rule, sur un fichier pouvant différent de nom selon la navigation.
En effet, je code ainsi:
CODE
RewriteRule   ^glossaire_rech.html$   /glossaire_rech.php  [L]
RewriteRule   ^glossaire_rech-([a-z]+)\.html$   /glossaire_rech.php?let=$1&cpt=3  [L]
RewriteRule   ^glossaire_rech-([a-z]+)\.html$   /glossaire_rech.php?terme=$1  [L]


Mais plus aucun fichier ne prend l'extension html.

La première ligne existait, et le mod-rewrite fonctionnait.
Depuis que j'en ai rajouté deux, ça ne fonctionne plus. Bah pourquoi ? :nono:

Avez-vous une idée ?

xpatval
Anonymus
Le [L] signifie qu'il faut executer la regle, et s'arreter si la regle s'applique. Il se pourrait que ce soit le cas, qu'il applique la regle, puis qu'il ne cherche pas à appliquer les autres.
Tu devrais inverser les 3 regles, mettre la première en dernier.
Compte supprimé
Tes rewrite-cond n°2 et 3 sont identiques.
A mon avis y'a un problème...
Compte supprimé
CITATION(Anonymus @ mardi 22 février 2005, 22h52)
Le [L] signifie qu'il faut executer la regle, et s'arreter si la regle s'applique. Il se pourrait que ce soit le cas, qu'il applique la regle, puis qu'il ne cherche pas à appliquer les autres.
Tu devrais inverser les 3 regles, mettre la première en dernier.
*


Je ne pense pas que ce soit le problème, vu que sa rewrit-cond n°1 est bien distincte des 2 autres, et ne peut pas les englober...

Remarque : dans les conds, il faut échapper le .html -> \.html (car tu recherche bien .html et pas [n'importe quel caractere]html )

Cordialement,
xpatval
Ca y est, je suis complètement paumé !!

même en enlevant les deux lignes supplémentaires, la première ne fonctionne plus... :nono:
Le mod_rewrite s'applique même s'il y a passage de paramètres via méthod=post ?

Je vais me coucher dots.gif

A demain.
xpatval
Bonjour,

J'en reviens à mes soucis de rewriting...Cette fois-ci, cette ligne
CITATION
RewriteRule   ^glossaire_rech_([a-z]+)\.html$   /glossaire_rech.php?let=$1&cpt=3  [L]
fonctionne bien en local, mais absolument pas en ligne (erreur 404)

Est-ce normal ?

xpatval
Dan
Essaies avec:
CODE
RewriteRule   glossaire_rech_([a-z]+)\.html   glossaire_rech.php?let=$1&cpt=3  [L]


C'est vraisemblablement le caractère ^ qui empêche le match, vu que Apache doit envoyer des caractères avant celui-là (par exemple un / ) qui suffisent pour que la règle ne soit pas vérifiée. smile.gif

Dan
xpatval
En fait, à force de triturer mon seul neurone, j'en arrive à cette hypothèse qu'est la différence de version d'Apache.
En effet, en local, comme je le disais précédemment, ce code fonctionne:
CODE
RewriteRule   ^glossaire_rech_lettre_([a-z]+)\.html$   /glossaire_rech.php?let=$1&cpt=3  [L]
(j'ai rajouté le terme "lettre"). Mais ne fonctionnait pas en ligne.
Bien entendu, comme nous sommes seuls fautifs de ce que l'on code, je me suis aperçu (tard) que le param de la variable $1 est en majuscule. Je modifie ma ligne en conséquence:
CODE
RewriteRule   ^glossaire_rech_lettre_([A-Z]+)\.html$   /glossaire_rech.php?let=$1&cpt=3  [L]

Content suis-je, car cela résoud mon problème, en ligne. Mais plus en local, car cela ne fonctionne plus... whistling.gif
Donc, j'en déduis que le flag [NC] va m'enlever cette épine: c'est chose faite.
Alors, soucis dû à la différence de version, ou pas ?

De plus, deux autres règles me font cogiter sans succès:
CODE
RewriteRule   ^glossaire_rech_terme_([A-Z]+)\.html$   /glossaire_rech.php?terme=$1  [NC,L]
où le $1 = Référence.
Y-a-t-il une règle spécifique pour les caractères accentués ?
Et celle-ci, où certains paramètres peuvent avoir un underscore ($1 = café_chocolat)
CODE
^contact_([a-z]+)\.html$  /contact.php?ask=$1  [L]

Que dois-je rajouter après ([a-z]+) ?

merci,

xpatval
Dan
As-tu lu mon post précédent ?

On ne dirait pas ! whistling.gif
xpatval
CITATION
As-tu lu mon post précédent ?

On ne dirait pas !

Fort heureusement, oui, car à quoi me servirait-il de poster des questions, si je n'applique pas les réponses que l'on peut me suggérer... wink.gif
Mais celle que tu me donnais n'a pas eu de succès. J'ai donc remis les ^ et $ et ajouté le flag [NC].

xpatval
Dan
Et le / devant la deuxième partie... tu l'avais enlevé ? Parce que sur un hébergement mutualisé tu n'as pas accès à la racine du serveur wink.gif
xpatval
CITATION
Et le / devant la deuxième partie... tu l'avais enlevé ?

Oui, absolument, mais c'est une 404 qui se produit.

xpatval
Dan
Quel est ton hébergeur ? Pas free tout de même ? whistling.gif
xpatval
OVH, en mutua. ^_^
Dan
Ah... je crois que dans ce cas il faut le / du deuxième membre whistling.gif
xpatval
Mon cher Dan, pour une fois que tes connaissances sont mises en défaut (ce qui est rare, je l'avoue, et te le concède [cirage de pompes]), là encore c'est une 404 qui apparaît.
Mais en ce qui concerne cette règle précise, je disais plus haut que j'avais résolu ce problème grâce au flag [NC]... wink.gif
Ce sont les deux autres qui m'ennuient toujours..hum...

xpatval
Dan
OK, j'avais mal lu l'intégralité...

Dans ce cas il faut remplacer tes règles par:

CODE
RewriteRule   ^glossaire_rech_terme_(.+)\.html$   /glossaire_rech.php?terme=$1  [L]

et
CODE
RewriteRule ^contact_(.+)\.html$  /contact.php?ask=$1  [L]

pour être plus générique et permettre les caractères accentués et l'underscore.
xpatval
Ah, là je te retrouve wink.gif

Mais, car il y en a forcément un, me reste deux questions:

Référencement ($1 de la règle) devient rã©fã©rencement.^Pour le requête qui suit, c'est le bide. Est-ce du à l'encodage ? (dans mon cas, le charset est iso-88-59-1)?

Est-il possible de placer un commentaire dans le .htaccess ?

Merci à toi pour les règles, et la patience.

xpatval
Dan
iso-88-59-1 n'exite pas... c'est iso-8859-1 wink.gif

Mais les caractères accentués dans l'URL sont une très mauvaise pratique. Il faut que tu fasses de l'encodage plutôt que de les transmettre tels quels (urlencode()).
xpatval
Oui, c'est ce que j'ai fait, mais l'url a une sale tronche
CITATION
/glossaire_rech_terme_R%E9f%E9rencement.html
... huh.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.