Page 1 sur 1

Url rewriting avec apache

Posté : 10 juil. 2009, 12:40
par hi-logik
Bonjour !

Voila je viens de terminer mon Architecture MVC et je me suis attaqué à l'url rewriting !

mon url sans ça ressemble à ça en général:

Code : Tout sélectionner

http://www.monsite.fr/module=blog&action=article&id=2
mon souhait serai de pouvoir utilisé n'importe quel ou presque séparateur entre chaque paramètre
du style :

Code : Tout sélectionner

http://www.monsite.fr/blog/article/2
ou par exemple :

Code : Tout sélectionner

http://www.monsite.fr/blog-article-2

j'y suis arriver avec l'url rewriting mais j'ecris autant de règle que j'ai de séparateur !
or je penses que je peux optimisé mes règles avec comme condition tel ou tel séparateur
que je pourrais listé à apache !

voiçi un extrais de mes règles:

Code : Tout sélectionner

# Exemple: blog/articles-1223.htm ou .html RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)-([0-9]+)\.htm$ index.php?module=$1&action=$2&id=$3 [L] RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)-([0-9]+)\.html$ index.php?module=$1&action=$2&id=$3 [L]

j'ai vu un peut RewritCond je ne sais pas trop comment m'en servir j'ai pas trop compris
sont utilité

ne peut on pas faire un truc du genre:

Code : Tout sélectionner

RewriteRule ^([a-zA-Z0-9]+)(ici condition separator (/ | - | _))([a-zA-Z0-9]+)-([0-9]+)\.htm$ index.php?module=$1&action=$2&id=$3 [L]
entre chaque variable mettre une condition : soit slashe, soit tiret, ou underscore ?

Merci d'avance pour votre aides !

++

Posté : 10 juil. 2009, 16:31
par Victor BRITO
Avant que de se précipiter dans le code du .htaccess, il faut déjà choisir le type d'URL réécrite qu'on souhaite. En effet,

Code : Tout sélectionner

http://www.monsite.fr/blog/article/2
et

Code : Tout sélectionner

http://www.monsite.fr/blog-article-2
seront considérées par les robots des moteurs de recherche comme deux URLs distinctes, donc comme deux pages différentes, auquel cas il y a un risque de duplicate content. Même motif, même punition pour

Code : Tout sélectionner

blog/articles-1223.htm
et

Code : Tout sélectionner

blog/articles-1223.html
Par conséquent, à chaque type d'URL à réécrire doit correspondre un seul type d'URL réécrite, peu importe le séparateur que tu choisis (soit dit en passant, évite autant que possible l'underscore comme séparateur : outre qu'il est peu lisible sur un lien souligné, il n'est pas toujours reconnu comme séparateur de mots par les robots des moteurs de recherche).

Posté : 10 juil. 2009, 16:50
par hi-logik
ok je te remercie pour ces conseilles je ne connaissais pas ses infos pour les robots !

cependant je souhaiterais quand même gérer les urls de façon divers même si je ne les utilisent pas forcément !

je vais faire mes urls de façon dynamique dans mes pages !
en gros je ferais une méthode qui gère le séparateur entre chaque mots dans mes liens comme
ça si je change de séparateur je le change dans la méthode et non dans tous les liens que j'aurais
pu faire auparavant !

je garderais une convention de nomage avec un séparateur pour ne pas faire le "duplicate content"
seulement je peux être amené à faire plusieurs site et le client peux vouloir un séparateur
plutôt qu'un autre dans son url et çà me permettrais de ne pas avoir à toucher au .htaccess à l'installation puisqu'il sera gérer en fonction de l'url !

je sais je pourrais le faire directement dans le .htacces à chaque installation de site
mais si ça peut se faire de façon automatique c'est plus pratique !

et en même temps ça renforce mes connaissances sur le .htaccess et ces possiblité !

quand penses tu ?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 10 juil. 2009, 17:08
par Victor BRITO
Je maintiens ce que j'ai dit précédemment :
à chaque type d'URL à réécrire doit correspondre un seul type d'URL réécrite
De plus, avec plusieurs réécritures possibles pour un même type d'URL, comme dans cet exemple que tu as fourni :

Code : Tout sélectionner

# Exemple: blog/articles-1223.htm ou .html RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)-([0-9]+)\.htm$ index.php?module=$1&action=$2&id=$3 [L] RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)-([0-9]+)\.html$ index.php?module=$1&action=$2&id=$3 [L]
au mieux l'une des deux règles sera systématiquement ignorée, au pire cela engendrera un conflit.

Posté : 10 juil. 2009, 17:25
par hi-logik
Oui j'ai saisie ce que tu m'as dis.

mais si les robots passent sur mon site il vont regarder les liens dans ma page
pas mon .htaccess ? du moins je penses ?

ce que je voulais c'est mettre mes liens dans mes pages de la même façon partout...

c'est à dire :

Code : Tout sélectionner

http://www.monsite.fr/blog/article/2 http://www.monsite.fr/forum/topic/2
je garde cette convention partout !

mais si je fais un autre site et que je choisi une autre convention de nommage de mes liens ça m'aurait évité de le configuré à chaque nouveau site que je fais.


maintenant si tu me dis que même comme ça c'est pas possible alors ok je configurais mon .htaccess à chaque nouveau site...

Posté : 10 juil. 2009, 17:35
par Victor BRITO
Quand j'évoque les éventuels problèmes, il s'agit surtout de problèmes au niveau d'Apache.

Les robots des moteurs de recherche se moquent des fichiers .htaccess : ils se concentrent plutôt sur le fichier robots.txt, ainsi que sur les indices laissés dans le code source (les meta robots, les rel="canonical" et autres rel="nofollow").

Posté : 10 juil. 2009, 19:32
par hi-logik
ok merci pour ton aide !

++ ^^