xpatval Posté 22 Février 2005 Posté 22 Février 2005 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: 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 ? Avez-vous une idée ? xpatval
Anonymus Posté 22 Février 2005 Posté 22 Février 2005 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é Posté 22 Février 2005 Posté 22 Février 2005 Tes rewrite-cond n°2 et 3 sont identiques. A mon avis y'a un problème...
Compte supprimé Posté 22 Février 2005 Posté 22 Février 2005 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. <{POST_SNAPBACK}> 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 Posté 22 Février 2005 Auteur Posté 22 Février 2005 Ca y est, je suis complètement paumé !! même en enlevant les deux lignes supplémentaires, la première ne fonctionne plus... Le mod_rewrite s'applique même s'il y a passage de paramètres via méthod=post ? Je vais me coucher A demain.
xpatval Posté 25 Février 2005 Auteur Posté 25 Février 2005 (modifié) Bonjour, J'en reviens à mes soucis de rewriting...Cette fois-ci, cette ligne 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 Modifié 25 Février 2005 par xpatval
Dan Posté 1 Mars 2005 Posté 1 Mars 2005 Essaies avec: 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. Dan
xpatval Posté 1 Mars 2005 Auteur Posté 1 Mars 2005 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: 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: 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... 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: 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) ^contact_([a-z]+)\.html$ /contact.php?ask=$1 [L] Que dois-je rajouter après ([a-z]+) ? merci, xpatval
xpatval Posté 1 Mars 2005 Auteur Posté 1 Mars 2005 (modifié) 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... 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 Modifié 1 Mars 2005 par xpatval
Dan Posté 1 Mars 2005 Posté 1 Mars 2005 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
xpatval Posté 1 Mars 2005 Auteur Posté 1 Mars 2005 Et le / devant la deuxième partie... tu l'avais enlevé ? Oui, absolument, mais c'est une 404 qui se produit. xpatval
Dan Posté 1 Mars 2005 Posté 1 Mars 2005 Ah... je crois que dans ce cas il faut le / du deuxième membre
xpatval Posté 1 Mars 2005 Auteur Posté 1 Mars 2005 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]... Ce sont les deux autres qui m'ennuient toujours..hum... xpatval
Dan Posté 1 Mars 2005 Posté 1 Mars 2005 OK, j'avais mal lu l'intégralité... Dans ce cas il faut remplacer tes règles par: RewriteRule ^glossaire_rech_terme_(.+)\.html$ /glossaire_rech.php?terme=$1 [L] et 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 Posté 1 Mars 2005 Auteur Posté 1 Mars 2005 (modifié) Ah, là je te retrouve 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 Modifié 1 Mars 2005 par xpatval
Dan Posté 1 Mars 2005 Posté 1 Mars 2005 iso-88-59-1 n'exite pas... c'est iso-8859-1 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 Posté 1 Mars 2005 Auteur Posté 1 Mars 2005 Oui, c'est ce que j'ai fait, mais l'url a une sale tronche /glossaire_rech_terme_R%E9f%E9rencement.html...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant