kinoute Posté 23 Octobre 2005 Posté 23 Octobre 2005 Bonjour à tous, J'utilise depuis peu Dotclear sur un hébergement OVH et je suis un adèpte des URI esthétiques ce qui implique bien entendu l'utilisation de l'Url Rewriting.. Je rencontre un problème assez lassant à ce niveau, voici mon problème ! Mes adresses sont pour l'instant du type http://blog.hivacruz.com/index.php/15-desk-mac-heaven Et j'aimerais les avoir sous la forme suivante : http://blog.hivacruz.com/billet-15-desk-mac-heaven.html A première vue rien de bien difficile, j'applique mes maigres connaissances en ce domaine pour en arriver à cet .htaccess RewriteCond %{REQUEST_URI} !ie7RewriteEngine onRewriteRule ^billet-(.*).html /index.php/$1 [L] Mais rien n'y fait, impossible de faire fonctionner ce code : Cela me renvoie toujours à l'index.. Avec les drapeaux [R,L] ça marche, mais l'url non rewritée est visible et c'est pas vraiment ce que je recherche J'ai dû donc bidouillé un max pour que ça fonctionne en utilisant un petit code php pour inclure la page recherchée.. ( include(""); ) RewriteCond %{REQUEST_URI} !ie7RewriteEngine onRewriteRule ^billet-(.*).html /page.php?titre=$1 [L] Et là ça fonctionne, mais j'aimerais bien pouvoir utiliser les techniques de l'url rewriting purement et simplement sans avoir à passer par d'autres scripts ! Je fais donc appel à vos lumières : Quel est le problème avec mon .htaccess cité plus haut ? Merci à vous
Jok Posté 23 Octobre 2005 Posté 23 Octobre 2005 Je n'apporte pas de réponse à ton problème puisque je viens moi-même d'essayer et je me retrouvais toujours sur l'index ... Du coup je suis plutot curieux de connaitre la réponse
Dan Posté 23 Octobre 2005 Posté 23 Octobre 2005 Salut, Le fait de mettre le "RewriteEngine On" après le "RewriteCond" est incorrect Un RewriteCond doit être suivi sans ligne blanche des réécritures à effectuer. Donc: RewriteEngine onRewriteCond %{REQUEST_URI} !ie7RewriteRule billet-(.+)\.html /index.php/$1 [L] Mais es-tu sûr que ce que tu veux faire est de rediriger toutes les URLs ne comportant pas ie7 ? Je ne suis pas certain de comprendre pourquoi. Dan
kinoute Posté 23 Octobre 2005 Auteur Posté 23 Octobre 2005 (modifié) J'ai viré le RewriteCond, cela donne : RewriteEngine onRewriteRule ^billet-(.+)\.html /index.php/$1 [L] Mais ça ne fonctionne pas comme vous pouvez le voir : http://blog.hivacruz.com/billet-15-desk-mac-heaven.html Toujours l'index.. Pourtant avec l'adresse http://blog.hivacruz.com/index.php/15-desk-mac-heaven pas de problème ! Pour l'histoire du ie7, j'ai pas mal galéré auparavant pour qu'il fonctionne correctement et cette ligne faisait partie des soi-disantes solutions pour le problème que je rencontrais Si d'autres personnes ont une idée pour l'htaccess, n'hésitez pas ! Edit: J'ai remis mon bidouillage pour l'instant en attendant de trouver une solution Modifié 23 Octobre 2005 par kinoute
Dan Posté 25 Octobre 2005 Posté 25 Octobre 2005 Peut-être qu'en retiant le bidouillage ou en publiant l'intégralité du fichier .htaccess on pourrait t'aider. Parce que là on est tous "dans le noir". As-tu essayé en enlevant le ^ du premier argument ? Parce que si Apache transmet /billet... la règle ne sera pas validée
kinoute Posté 25 Octobre 2005 Auteur Posté 25 Octobre 2005 (modifié) ( Désolé pour l'histoire du dump au passage ) Voici mon .htaccess concocté avec les bidouillages et les include ( vu que ca ne fonctionne pas ) RewriteEngine onRewriteRule billets-(.*)\.html /index.php/$1 [L] ( pour tester d'apres ton post, résultat : toujours pareil )RewriteRule ^billet-(.*)\.html /billet.php?titre=$1 [L]RewriteRule ^liste-page-(.*).html /page.php?page=$1 [L]RewriteRule ^categorie-moi-ma-vie.html$ /categorie.php?cat=Moi [L]RewriteRule ^categorie-informatique.html$ /categorie.php?cat=Informatique [L]RewriteRule ^categorie-musique-trance.html$ /categorie.php?cat=Musique [L]RewriteRule ^categorie-lycee-cassini.html$ /categorie.php?cat=Cassini [L]RewriteRule ^categorie-design-desks.html$ /categorie.php?cat=Design [L]RewriteRule ^categorie-divers.html$ /categorie.php?cat=Divers [L]RewriteRule ^11-desk-style-mac-blue.html /billet-11-desk-style-mac-blue.html [L]RewriteRule ^2-hivalazy-raccourcis-texte.html /billet-2-hivalazy-raccourcis-texte.html [L]RewriteRule ^6-biture-du-24-09.html /billet-6-biture-du-24-09.html [L]RewriteRule ^8-alessandra-ambrosio-marcus-wallpaper.html /billet-8-alessandra-ambrosio-marcus-wallpaper.html [L]RewriteRule ^flux-rss-billets.html$ /rss.php [L]RewriteRule ^flux-rss-commentaires.html$ /rss.php?type=co [L]RewriteRule ^11-desk-style-mac-blue.html /billet-11-desk-style-mac-blue.html [L]RewriteRule ^1-bienvenue-sur-mon-journal.html /billet-1-bienvenue-sur-mon-journal.html [L] Modifié 25 Octobre 2005 par kinoute
klelugi Posté 25 Octobre 2005 Posté 25 Octobre 2005 http://blog.hivacruz.com/index.php/15-desk-mac-heaven Et j'aimerais les avoir sous la forme suivante : http://blog.hivacruz.com/billet-15-desk-mac-heaven.html Salut kinoute, Il y a quelque chose qui me dérange dans ton URL de départ... http://blog.hivacruz.com/index.php/15-desk-mac-heaven Cette URL me semble déjà être une réécriture, de par exemple : http://blog.hivacruz.com/index.php?titre=id_article Si c'est le cas il faudrait mieux faire une réécriture sur cette URL...
Dan Posté 25 Octobre 2005 Posté 25 Octobre 2005 Dans la première règle tu mets billets et non billet ... C'est voulu ? Parce qu'en changeant ton URL en http://blog.hivacruz.com/billets-15-desk-mac-heaven.html , ça marche chez moi :!: Dan
kinoute Posté 25 Octobre 2005 Auteur Posté 25 Octobre 2005 (modifié) Salut kinoute, Il y a quelque chose qui me dérange dans ton URL de départ... http://blog.hivacruz.com/index.php/15-desk-mac-heaven Cette URL me semble déjà être une réécriture, de par exemple : http://blog.hivacruz.com/index.php?titre=id_article Si c'est le cas il faudrait mieux faire une réécriture sur cette URL... <{POST_SNAPBACK}> En effet, les URLs de Dotclear sont à la base sous cette forme par exemple : http://petit.dotclear.net/pages/2005/04/22/83-faites-vous-remarquer-dans-les-commentaires Un plug-in ( n'utilisant pas de .htaccess pour info ) permet de se ramener à des URLs du type http://petit.dotclear.net/pages/83-faites-vous-remarquer-dans-les-commentaires C'est ce que j'ai fait, je ne pense pas que le problème vienne de là sinon la ligne RewriteRule ^billet-(.*)\.html /billet.php?titre=$1 [L] dans mon htaccess ne fonctionnerait pas non plus ( pour rappel le fichier billet.php utilise simplement un include("http://blog.hivacruz.com/index.php/".$titre.""); ) Dans la première règle tu mets billets et non billet ... C'est voulu ? Parce qu'en changeant ton URL en http://blog.hivacruz.com/billets-15-desk-mac-heaven.html , ça marche chez moi :!: Dan <{POST_SNAPBACK}> C'est volontaire : j'ai juste voulu tester la condition que tu m'avais soumis juste avant sans pour autant enlever mon bidouillage d'ou le s à billets pour que je puisse tester à côté sans chambouler tout mon blog Mais je ne comprends pas quand tu dis que http://blog.hivacruz.com/billets-15-desk-mac-heaven.html fonctionne chez toi, car perso c'est toujours la même chose, il me renvoie sur l'index du blog alors qu'il devrait m'afficher le billet ! C'est limite si je pense que ça vient de Dotclear toute cette histoire Un grand merci pour votre aide en tout cas ! Modifié 25 Octobre 2005 par kinoute
Dan Posté 25 Octobre 2005 Posté 25 Octobre 2005 Juste, ca donne la page d'accueil du Blog, et non la page demandée. Et pourquoi fais-tu un include ? Quelle est l'URL que demande DotClear lorsqu'on ne fait pas de réécriture pour afficher ce billet ? Dan
kinoute Posté 25 Octobre 2005 Auteur Posté 25 Octobre 2005 Je fais un include car cest le seul compromis qui fonctionne pour que je puisse faire de l'url rewriting jusqu'à maintenant compte-tenu qu'en utilisant les fonctions usuelles de l'htaccess ca ne veut pas :/ Pour accéder au billet sans url rewritée : http://blog.hivacruz.com/index.php/15-desk-mac-heaven Et sans plug-in du tout : http://blog.hivacruz.com/index.php/2005/10...desk-mac-heaven ( Faites pas attention aux erreurs php, c'est juste un systeme pour que chaque page est un meta description différent )
Jok Posté 25 Octobre 2005 Posté 25 Octobre 2005 Euh moi http://blog.hivacruz.com/billet-15-desk-mac-heaven.html fonction nikel maintenant ... J'atterris bien sur l'article.
kinoute Posté 25 Octobre 2005 Auteur Posté 25 Octobre 2005 Car le bidouillage est toujours actif tout simplement ! Essayes http://blog.hivacruz.com/billets-15-desk-mac-heaven.html ( billet avec un s, regardes à quoi il correspond dans le htaccess plus haut ) ca ne fonctionne pas
Dan Posté 25 Octobre 2005 Posté 25 Octobre 2005 A mon sens, c'est à cause du [L] en fin de règle. Parce qu'avec ton bidouillage cela marche, mais sans lui cela renvoie une URL de type index.php/15-desk-mac-heaven et vu le flag L il n'y a pas d'autre tentative de réécriture. Comme on ne sait pas ce que tu appelles "plug-in" et ce que fait celui-ci, on bloque à ce niveau. Fais un essai sans ce flag [L] Dan Je fais un include car cest le seul compromis qui fonctionne pour que je puisse faire de l'url rewriting jusqu'à maintenant compte-tenu qu'en utilisant les fonctions usuelles de l'htaccess ca ne veut pas :/ A part le fait qu'il ne te fera pas le café ou le ménage de l'appart, je ne vois pas où le .htaccess puisse empêcher quoi que ce soit
Jok Posté 25 Octobre 2005 Posté 25 Octobre 2005 J'ai essayé, je n'ai pas vu de différence. J'ai fait des tests comme ça pour voir. J'ai mis un htaccess : Options +FollowSymlinksRewriteEngine onRewriteRule ^billet-(.*).html index.php/$1 [L]RewriteRule ^page-(.*).html index.php?$1 [L] Et un fichier index.php qui affiche seulement 2 infos : <?php echo "REQUEST_URI: <b>".$_SERVER["REQUEST_URI"]."</b><br />"; echo "QUERY_STRING: <b>".$_SERVER["QUERY_STRING"]."</b>";?> J'ai donc essayé 2 types d'url : > http://www.j0k3r.net/nimp/rewrite/page-15-...mac-heaven.html > http://www.j0k3r.net/nimp/rewrite/billet-1...mac-heaven.html C'est bizarre, la subtilité du ? à la place du / (dans le htaccess) permet de faire fonctionner ce que cherche kinoute. Apache ferait-il des siennes avec des dossiers virtuels ?
kinoute Posté 27 Octobre 2005 Auteur Posté 27 Octobre 2005 A mon sens, c'est à cause du [L] en fin de règle. Parce qu'avec ton bidouillage cela marche, mais sans lui cela renvoie une URL de type index.php/15-desk-mac-heaven et vu le flag L il n'y a pas d'autre tentative de réécriture. Comme on ne sait pas ce que tu appelles "plug-in" et ce que fait celui-ci, on bloque à ce niveau. Fais un essai sans ce flag [L] Dan A part le fait qu'il ne te fera pas le café ou le ménage de l'appart, je ne vois pas où le .htaccess puisse empêcher quoi que ce soit <{POST_SNAPBACK}> Voici les détails du plug-in m'ayant permis de réduire les permaliens sur Dotclear : http://tw.apinc.org/weblog/2005/06/07/pers...euxieme-service Sinon, j'ai fait quelques tests supplémentaires ce matin avec ce bout d'htaccess : RewriteEngine onRewriteRule ^flag_r-(.*)\.html /index.php/$1 [R]RewriteRule ^flag_l-(.*)\.html /index.php/$1 [L]RewriteRule ^noflag-(.*)\.html /index.php/$1RewriteRule ^billet-(.*)\.html /billet.php?titre=$1 [L][...] Avec le flag [R] ça marche ( vous pouvez tester ) mais l'url non rewritée apparait chez le visiteur. Avec le flag [L] cela ne fonctionne pas, de même pour la ligne sans flag J'ai essayé, je n'ai pas vu de différence. J'ai fait des tests comme ça pour voir. J'ai mis un htaccess : Options +FollowSymlinksRewriteEngine onRewriteRule ^billet-(.*).html index.php/$1 [L]RewriteRule ^page-(.*).html index.php?$1 [L] Et un fichier index.php qui affiche seulement 2 infos : <?php echo "REQUEST_URI: <b>".$_SERVER["REQUEST_URI"]."</b><br />"; echo "QUERY_STRING: <b>".$_SERVER["QUERY_STRING"]."</b>";?> J'ai donc essayé 2 types d'url : > http://www.j0k3r.net/nimp/rewrite/page-15-...mac-heaven.html > http://www.j0k3r.net/nimp/rewrite/billet-1...mac-heaven.html C'est bizarre, la subtilité du ? à la place du / (dans le htaccess) permet de faire fonctionner ce que cherche kinoute. Apache ferait-il des siennes avec des dossiers virtuels ? <{POST_SNAPBACK}> Concrètement, qu'est-ce que cela signifie ? Je ne sais pas si ça peut t'aider mais sur Dotclear il y a deux types d'URLs disponible : Query string et Path Info ( mon choix s'est porté sur celui-ci ) Encore merci
davidm Posté 27 Octobre 2005 Posté 27 Octobre 2005 Je ne suis pas rentré dans le détail et j'ai lu en diagonale, mais question bête : as tu tenu compte des modifications à appliquer du fait du module Apache customisé sur OVH, mod_ort ?
kinoute Posté 27 Octobre 2005 Auteur Posté 27 Octobre 2005 Je ne suis pas rentré dans le détail et j'ai lu en diagonale, mais question bête : as tu tenu compte des modifications à appliquer du fait du module Apache customisé sur OVH, mod_ort ? <{POST_SNAPBACK}> Je pense avoir fait ce qu'il faut, j'ai ajouté le "/" devant les URL non rewritées Je comprends vraiment pas d'où ça peut venir..
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant