Un petit exemple de rewriteRules avec un ptit trick :-)

Nouveau WRInaute
Bonjour a tous,

Voila je voulais proposer un petit exemple de rewrite rules que j'utilise sur un de mes sites.

Code:
RewriteRule ^([(a-zA-Z]+)/([a-zA-Z0-9]+)/([0-9]+)/ /index.php?mod=$1&cat=$2&id=$3 [L]

RewriteRule ^([(a-zA-Z]+)/([a-zA-Z0-9]+)/p([0-9]+)/ /index.php?mod=$1&cat=$2&page=$3 [L]

RewriteRule ^([(a-zA-Z]+)/([a-zA-Z0-9]+)/ /index.php?mod=$1&cat=$2 [L]

RewriteRule ^([(a-zA-Z]+)/ /index.php?mod=$1 [L]

Ceci me permet d'obtenir des url assez propres du type http://url/module/categorie/id/ (categorie et id sont ici optionnels)

Je trouve cela assez propre personnellement.

Seulement voila, apres application je me suis appercu que tout mes sous-repertoires faisaient un "match" sur la rewriteRule. Mes images dans http://url/image/ n'etaient donc plus accessible.

Alors voila, apres un peu de lecture de la documentation apache j'ai trouver ca
Code:
RewriteCond /path/%{REQUEST_URI} !-f

Alors voila pour la petite explication, ici /path represente le document_root, l'instruction %{REQUEST_URI} contient /images/example.png lorsque vous appellez http://url/images/example.png. Ensuite le !-f, ici le -f sert pour verifier que le fichier existe, ou pas. Si il existe alors la rewriteRules qui suit est executee sinon ... elle ne l'est pas. Ici c'est exactement le schema inverse que je souhaitais donc j'ai rajouter le signe ! qui symbolise la negation :)

Pour obtenir un truc legerement plus pratique a utilise, j'utilise
Code:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f

Le code final de mes regles de rewrite est donc
Code:
RewriteEngine on



RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f

RewriteRule ^([(a-zA-Z]+)/([a-zA-Z0-9]+)/([0-9]+)/ /index.php?mod=$1&cat=$2&id=$3 [L]



RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f

RewriteRule ^([(a-zA-Z]+)/([a-zA-Z0-9]+)/p([0-9]+)/ /index.php?mod=$1&cat=$2&page=$3 [L]



RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f

RewriteRule ^([(a-zA-Z]+)/([a-zA-Z0-9]+)/ /index.php?mod=$1&cat=$2 [L]



RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-f

RewriteRule ^([(a-zA-Z]+)/ /index.php?mod=$1 [L]

Voila :)

J'espere avoir ete assez clair pour pouvoir me faire comprendre, je suis desole si le post est redondant mais cela ne semble pas etre le cas.

Bonne continuation :)
 
WRInaute occasionnel
super utile, ça faisait un bail que je cherchais à resoudre ce pb sur mon site, merci !
 
WRInaute impliqué
Bien, mais à éviter sur un site/serveur très visité.

Déjà que le rewrite ajoute pas mal de charge, le fait de vérifier la présence du fichier alourdi considérablement l'ensemble.
 
WRInaute accro
Gralon a dit:
Bien, mais à éviter sur un site/serveur très visité.

Déjà que le rewrite ajoute pas mal de charge, le fait de vérifier la présence du fichier alourdi considérablement l'ensemble.

D'accord, mais c'est interressant comme conditionel et tout ce que ca peut apporter... Une question: mettre le .htaccess dans le dossier cible ne suffit-il pas a ne pas avoir ce probleme d'acces aux sous dossiers ?
 
Nouveau WRInaute
KOogar a dit:
Gralon a dit:
Bien, mais à éviter sur un site/serveur très visité.

Déjà que le rewrite ajoute pas mal de charge, le fait de vérifier la présence du fichier alourdi considérablement l'ensemble.

D'accord, mais c'est interressant comme conditionel et tout ce que ca peut apporter... Une question: mettre le .htaccess dans le dossier cible ne suffit-il pas a ne pas avoir ce probleme d'acces aux sous dossiers ?

J'en doute :-/
 
Nouveau WRInaute
Gralon a dit:
Bien, mais à éviter sur un site/serveur très visité.

Déjà que le rewrite ajoute pas mal de charge, le fait de vérifier la présence du fichier alourdi considérablement l'ensemble.

Hum, le fait qu'il verifie la presence du fichier ... je sais pas ... les acces fichiers unix sont tout de meme extremement rapide hein. Bon c'est vrai que ca alourdi mais bon ... le but recherche est une meilleure indexation par les moteurs de recherche, apres tout est histoire de peser le pour et le contre :).

Enfin bon ... ta remarque reste pertinente meme si je l'utilise sur des plutot gros site (8 millions de pages vues par mois) et que ca ne semble pas poser de probleme.
 
Nouveau WRInaute
Salut à tous!

C'est excellent ca.

Je vais surêment l'adopter pour mon site.
J'avais fait autrement mais c'est bien mieux ave cette méthode.

Bonne soirée
 
Nouveau WRInaute
Bonjour,

J'etais en train de cherché exactement ce type de réécriture d'url pour sites web, mais je mettais orienter vers le path info. En tout cas, le résultat est le plus important, merci de nous transmettre tes recherches. :p


Par contre, je viens de tester, mais ca ne marche pas... Enfin peut etre que je ne sais pas l'utiliser...

Voici ma réécriture :

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f
RewriteRule ^(.+)/ /index.php?main=$1 [L]

Ma page d'accueil du site est ici (le site est en cours de construction), et les liens du menu en dessous du logo utilisent cette réécriture et... Erreur 404 !

Si quelqu'un pourrait me donner un petit coup de main, ce serait sympa !
 
Nouveau WRInaute
mikl194 a dit:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f
RewriteRule ^(.+)/ /index.php?main=$1 [L]

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f
RewriteRule ^([^/]+)/ /index.php?main=$1 [L]


essaye ca ou

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f
RewriteRule ^([^\/]+)/ /index.php?main=$1 [L]

Mais a priori ca devrait etre la premiere :)
 
Nouveau WRInaute
Je viens de comprendre que la n'est pas le probleme, avec les trois possibilités, la redirection génére une erreur 404. Par contre, en jouant un peu avec les url, jai remarqué que :

- pour une url existante, qui est censé marcher, comme http://www.memocamfrance.com/concept_memocam, l'erreur 404 est directement affiché !

- pour une url ou le fichier à inclure n'existe pas, par exemple pour http://www.memocamfrance.com/concept_mekjbukb, il m'affiche le site, avec l'erreur que je genere moi dans mon code, du faites que la page demandé n'existe pas.

Bizarre, non ???
 
WRInaute impliqué
merci pour ce topic

mais j'ai un peu du mal a comprendre, purrais tu me faire un exemple si ca te dérange pas.

RewriteRule ^([(a-zA-Z]+)/([a-zA-Z0-9]+)/([0-9]+)/ /index2.php?inc=page2&cat1=programme&cat2=bureautique&log=Excel [L]

merci d'avance.
 
WRInaute impliqué
Superbaloo a dit:
Gralon a dit:
Bien, mais à éviter sur un site/serveur très visité.

Déjà que le rewrite ajoute pas mal de charge, le fait de vérifier la présence du fichier alourdi considérablement l'ensemble.

Hum, le fait qu'il verifie la presence du fichier ... je sais pas ... les acces fichiers unix sont tout de meme extremement rapide hein. Bon c'est vrai que ca alourdi mais bon ... le but recherche est une meilleure indexation par les moteurs de recherche, apres tout est histoire de peser le pour et le contre :).

Enfin bon ... ta remarque reste pertinente meme si je l'utilise sur des plutot gros site (8 millions de pages vues par mois) et que ca ne semble pas poser de probleme.

Je ne désaprouve pas cette technique, j'utilise le "rewriting" depuis très longtemps.
C'est juste une constatation générale sur le fait que ça "alourdi" considérablement les process httpd en mémoire.

Mais avec les serveurs actuels ce n'est plus un problème (ça l'était réellement il y a quelques années).
 
WRInaute impliqué
quelqu'un pourrai me donner un coup de main svp pour mettre en place
ces lignes svp!!!!

Content de voir que gralon fait aussi parti de wri, bravo pour ton annuaire et content de savoir que tu es un niçois.

petite question l'annuaire cote.dazur.fr c'est aussi ton annuaire???
 
WRInaute passionné
Moi j'utilise cette condition là pour exclure certains repertoires:
RewriteCond %{REQUEST_URI} !^.*(rep1|re2|style|images).*$ [NC]

Si il n'y a pas trop de repertoires je pense que c'est facilement gérable ainsi, par contre je ne sais pas si c'est plus ou moins rapide que vérifier la présence du fichier. Si un spécialiste pouvait me donner son avis
 
WRInaute impliqué
datch a dit:
quelqu'un pourrai me donner un coup de main svp pour mettre en place
ces lignes svp!!!!

Content de voir que gralon fait aussi parti de wri, bravo pour ton annuaire et content de savoir que tu es un niçois.

petite question l'annuaire cote.dazur.fr c'est aussi ton annuaire???

J'ai travaillé pour la société à qui appartient cote.azur.fr (et federal-hotel.com) jusqu'en novembre 2006, j'ai fait 90% du dev et des idées et 100% du référencement.
Maintenant je suis passé à d'autres choses et pleins de nouveaux projets
8)

ps : c hors sujet, donc MP si tu as besoin de + d'infos
 
Discussions similaires
Haut