Aller au contenu

Encore un problème d'url Rewriting !


Sujets conseillés

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} !ie7

RewriteEngine on

RewriteRule ^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 :unsure:

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} !ie7

RewriteEngine on

RewriteRule ^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 :rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 on
RewriteCond %{REQUEST_URI} !ie7
RewriteRule 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

Lien vers le commentaire
Partager sur d’autres sites

J'ai viré le RewriteCond, cela donne :

RewriteEngine on

RewriteRule ^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é par kinoute
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

( 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 on

RewriteRule 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é par kinoute
Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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(&quot;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 :unsure:

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é par kinoute
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 )

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 +FollowSymlinks
RewriteEngine on

RewriteRule ^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 ? :wacko:

Lien vers le commentaire
Partager sur d’autres sites

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

<{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 on

RewriteRule ^flag_r-(.*)\.html /index.php/$1 [R]
RewriteRule ^flag_l-(.*)\.html /index.php/$1 [L]
RewriteRule ^noflag-(.*)\.html /index.php/$1
RewriteRule ^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 :unsure:

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 +FollowSymlinks
RewriteEngine on

RewriteRule ^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 ?  :wacko:

<{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 :rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

Je comprends vraiment pas d'où ça peut venir..

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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