Version complète: sur le forum Webmaster Hub : Probleme simple d'url rewriting..
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
Kent
Bonjour à tous,

Je souhaite mettre en place la réecriture de liens pour un site. Ma regle me semble correcte et je ne comprend pas d'où viens le probleme.

J'ai des adresses du type : showvideo.php?idv=123321&titre=AbCDefG

Je souhaiteré un affichage de ce type là : video-123321-AbCDefG.html

J'ai donc ecrit cette regle :

CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^video-([0-9]+)-([a-z\-]*)\.html$ showvideo.php?idv=$1&titre=$2 [L]


Le navigateur continue d'afficher des URLs du type showvideo.php?idv=123321&titre=AbCDefG

Quelques précisions :
J'utilise WAMP5. Avec PHP5 et MySQL 5 , le mod_rewrite est activé.

Merci pour vos réponses
Fabrice11
CITATION(Kent @ mercredi 10 janvier 2007, 09h57) *
Le navigateur continue d'afficher des URLs du type showvideo.php?idv=123321&titre=AbCDefG


Bonjour,

ta règle est correcte. Cependant, je crois que tu n'as pas compris comment fonctionne l'URL rewrite. blush.gif
L'url Rewrite de transforme pas tes liens PHP en HTML mais l'inverse !!

Dans ton site, développé surement en PHP, il faut mettre des liens en HTML de type :

CODE
<a href="showvideo-123-abc.html">Video</a>


Ensuite lorsque ton serveur reçoit l'url ci-dessus, il la transforme en PHP de type showvideo.php?idv=123321&titre=AbCDefG si il trouve une règle correspondante dans le .htaccess

Bonne journée
Kent
Bonjour Fabrice,

Dans ma page .php j'ai un lien du type :
CODE
echo "<li><a href='video-".$lesDernieresVideos['idvideo']."-".$lesDernieresVideos['titre'].".html'>".$lesDernieresVideos['titre']."</a>";


L'url rewriting transformera ceci en : showvideo.php?idv=123&titre=AbC

Le navigateur me mets "not found" ...

Je ne comprends pas
Fabrice11
Est-ce que le titre de la page marque "Erreur 500" ?
Kent
Non le type d'erreur n'est pas internal 500 , mais bien Page not found, comme ou un joli 404 !

Je viens de testé en essayant d'enlever le titre de la video et dans le RewriteRule et dans le lien html, et ça fonctionne, le fait que je precise le titre pose probleme.

Comment puis-je faire pour avoir un lien du type

CODE
<a href="video-1-vacances.html">Video</a>


Mais que apache ne se serve que de l'id et non du reste , il transformeré donc ça en :

CODE
showvideo.php?idv=1


J'ai essayé comme ceci :

CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^video-([0-9]+)-([a-z\-]*)\.html$ showvideo.php?idv=$1[L]


Mais toujours une 404
Fabrice11
Alors il te met aucune page car il n'arrive pas à associer une règle à 'url demandé.
Ta règle ne doit pas être bonne finalement tongue.gif .

Je te donne une règle utilisée dans un de mes projets:
CODE
RewriteRule ^discussion-(.+)-([0-9]+)-([0-9]+).html$  index.php?visu=listingTopic&id_topic=$2&page=$3 [L]


Cependant les chiffres sont à la fin de l'URL et pas au milieu.
Kent
En fait dans l'url je voudrais afficher le titre de la video, mais dans mon fichier php, je ne me sert que de son id, je voudrais donc interpreter qu'une partie de l'url et non l'url en entier.

Dans video-1-vacances.html , ce qui est interessant pour le referencement c'est que le titre soit afficher dans l'url, mais ce que moi je souhaite en PHP c'est recuperer ce "1" j'ai donc ecrit la regle suivante.

CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^video-([0-9]+)-([a-z\-]*)\.html$ /showvideo.php?idv=$1[L]


Cette regle vas bien prendre prendre le 1er terme entre parenthese pour le placé derriere "idv=" non ?

EDIT : J'ai resolu mon probleme la casse etait prise en compte du coup ça ne foncionnait pas, pour ceux qui recontre le même soucis, ajouter le flag [NC] à la fin ou ecrivez "[a-zA-Z]" au lieu de "[a-z]"
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.