Version complète: sur le forum Webmaster Hub : Réécriture d'urls autre que par chiffre ?
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
Jam
Salut à tous cool.gif

J'aimerai réécrire une adresse du type : mondomaine.com/annuaire/categorie.php?categorie=Musique


J'avai réussi lorsque les categorie de mon annuaire avait des adresse du type : http://mondomaine.com/annuaire/categorie.php?categorie=8

Mais j'avou qu'en lettre...j'ai du mal whistling.gif


Ah et une deuxieme question la réécriture d'url ce fait t'elle automatiquement ? Je m'explique : j'ai sur une page un lien qui ce nome par exemple : http://mondomaine.com/fichier.php?action=7 (ok ?). Lorsque je clic sur le lien, l'addresse de la page aparait non Réécrite (http://mondomaine.com/fichier.php?action=7) pourtant la réécriture doit fonctionner puisque si je tape (par exemple) à la main l'addresse http://mondomaine.com/action-7.html cela fonctionne. Pourquoi la page se renome-t-elle pas automatiquement lorsque l'on pointe sur le lien?


Merci d'avance tongue.gif
Dan
Bonjour,

Tu démontres une incompréhension de la réécriture d'URLs comme beaucoup de débutants.

Et non, elle n'est pas automatique du tout q_smallexcla.gif
C'est à toi de modifier les sources de tes pages pour que les URLs soient sous la nouvelle forme.

Lorsque tu as une url nommée action-7.html, ce sont les règles de ton fichier .htaccess qui vont traduire cela en fichier.php?action=7 ... et pas l'inverse.
Ceci tout simplement pour présenter au serveur web (Apache/Php/MySql) le bon fichier (fichier.php), avec le bon paramètre (7) de manière à ce qu'il puisse te concocter une page.

Quant-à te lancer dans la réécriture d'URLs avec des noms tels que "musique" il faudra que ton script puisse récupérer la page souhaitée grâce à cette variable qui contiendra musique au lieu d'un nombre.
cela suppose de réécrire ce fichier pour les interrogations à la base de données, et aussi t'assurer que ces données sont uniques.
Ce n'est certainement pas simple à faire.

Dan
Théo B.
Pour reprendre un peu la partie sur les chiffres, je pense que tu pourrais aussi (ce qui simplifierait grandement les choses) mettre, au lieu de action-7, action-7-musique.
Ton fichier .htaccess ne passerait que l'id (7) dans l'url finale, mais ton référencement en serait amélioré.
Jam
Ben pour le moment cela fonctionne plutot bien comme ca: mondomaine.com/annuaire/categorie.php?categorie=Musique

Mes pour la réécriture d'url effectivement je ne suis pas sur d'avoir tout saisi unsure.gif

Par exemple je vois sur ce votre site cette adresse : webmaster-hub.com/publication/article135.html

Il me semblai que cela etait justement de la réécriture d'url (?)



Hie hie hie je me perd tongue.gif
Dan
Ah, si ton programme categorie.php accepte déjà le paramètre categorie=musique, c'est simple !

Tu voudrais quoi comme URL à la place ?
Jam
idéalement je voudrai que: mondomaine.com/annuaire/categorie.php?categorie=Musique
Devienne mondomaine.com/annuaire/musique.html

Voir meme un repertoire virtuel: mondomaine.com/annuaire/musique/



hypocrite.gif
Théo B.
Il te suffit dans ce cas de mettre un simple .htaccess :

CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule   ^([a-zA-Z0-9\-]*)$   categorie.php?categorie=$1  [L][L]

Attention, ça redirigera tous les répertoires vers categorie.php...
Je te conseille de faire des regles pour les repertoires images et autres avant.

//Edité : une petite erreur de code :x
Jam
Hum ok j'avai pas vu pour l'érreur

Eu ben en faite du coup il ne me trouve plus aucune page dans le repertoire nomdomaine.com/annuaire/

Cela devien une erreur 404
Dan
Normal, parce que cette règle redirige aussi categorie.php vers... categorie.php hypocrite.gif

Il faut la modifier et ajouter un \.html en fin de premier argument.

Dan
Compte supprimé
Je vais essayer de m'y coller, car malgré les explications du pro qu'est Dan il semble que tu ne comprends pas tout. La pédagologie c'est mon métier tongue.gif

La réécriture d'url indique simplement au seveur de renvoyer une autre page que celle qui a été demandée.

Ex: tu demandes http://mondomaine.com/action-7.html (page qui n'existe pas sur ton serveur) et le serveur te renvoie la page http://mondomaine.com/fichier.php?action=7 (page qui existe).

Pour demander http://mondomaine.com/action-7.html tu as 2 solution :
1/ la taper directement dans la barre d'adresse de ton navigateur
2/ suivre un lien

Tu as donc compris que le serveur le réécrit pas les liens. C'est à toi de transformer toutes les url de tes pages pour faire apparaitre les bons liens, c'est à dire ceux sous la forme http://mondomaine.com/action-7.html


Pour ton deuxième pb : utiliser "des lettres", c'est pareil,

annuaire/musique/ > annuaire/categorie.php?categorie=Musique

pourait être traduit par

CODE
Rewriterule ^annuaire/([a-z0-9_-]+)/?$ annuaire/categorie.php?categorie=$1 [QSA,L]


Au début de ta page categorie.php il faut "identifier" le paramètre categorie. Tu peux par exemple faire

<?php
if ($_GET['categorie']=="Musique") include (...);
else if ($_GET['categorie']=="Chant") include (...);
...


Voila.
Jam
Je comprend bien pour la réécriture d'url.

CITATION
<?php
if ($_GET['categorie']=="Musique") include (...);
else if ($_GET['categorie']=="Chant") include (...);


Cette solution me semble fastidieuse non ? Car si je doit redéfinir toute les catégorie d'un annuaire (par exemple...) cela risque d'etre long si il y'en à 190 ! tongue.gif
Compte supprimé
C'était une solution.
Une autre solution serait de rechercher dans ta base de donnée un champ qui corresponde au paramètre (au lieu de rechercher un ID). Il faut veiller a ce que ce champ de ta base soit unique
Jam
Ok, je vais déja fonctionner dans l'ordre tongue.gif

Pour le .htaccess :
CITATION
Rewriterule ^annuaire/([a-z0-9_-]+)/?$ annuaire/categorie.php?categorie=$1 [QSA,L]


Cela ne marche pas j'ai une erreur 404 esce le chemin qui ne serai pas bon ?
Compte supprimé
404 sur quelle url ?

Donne moi une de tes règles avec numéro qui marche.
Jam
Alors le chemin au complet : mondomaine.com/site/annuaire/categorie.php?categorie=Musiques


Voili voilou wink.gif


Edit : j'avai mis une petite erreur voila c'est le bon chemin wink.gif
Théo B.
Mais où mets tu ton .htaccess ?
Normalement, il devrait être dans le dossier site, et pas à la racine.
Jam
Il est dans le Dossier /annuaire/

Hum autemp pour moi...
Je ne l'avai pas mis dans le bon dossier b_thumbsdown_20.gif
Jam
En tout cas, Merci Beaucoup à tous pour vos réponses et pour le temp que vous avez pris pour répondre.


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