URL Rewriting

Signaler
Messages postés
73
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2012
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

Comment faire la chose suivante :

Se rendre sur la page http://www.abc.com/ouilo/ssss/index.php
donne la même chose que
se rendre sur la page http://www.abc.com/index.php?ch=ouilo/ssss

Il me semble que c'est avec htaccess mais je ne sais pas très bien comment ça marche. Merci beaucoup.


KJM

8 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Salut,

Effectivement, c'est un fichier .htaccess, qui doit contenir ça :
Pour pouvoir te donner la réponse, il manque une information. Est-ce que ouilo et ssss sont constants ou peuvent changer ?

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
73
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2012

Merci beaucoup pour ta réponse neige :)

Alors oui c'est variable :

http://www.abc.com/aaaa/bbbb/index.php?truc=bidule&machin=chose

doit être équivalent à

http://www.abc.com/index.php?truc=bidule&machin=chose&ch=aaaa/bbbb

Ça me parait un peut compliqué mais je suis sûr que ça n'a pas de secrets pour les habitués du URL rewriting :)

KJM
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Ok. Essaie un truc comme ça :

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]+)/([^/]+)/.* /index.php?ch=$1/$2 [QSA,L]


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
73
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2012

Super merci beaucoup pour cette solution !

J'ai fait :

RewriteEngine On
RewriteBase /
RewriteRule ^([^/]+)/.* /index.php?ch=$1 [QSA,L]

Par contre si l'internaute va sur http://www.abc.com/aaa au lieu de http://www.abc.com/aaa/ ça ne marche plus... (sans le /)

Si je fais :
RewriteRule ^([^/]+)/.* /index.php?ch=$1 [QSA,L]
RewriteRule ^([^/]+) /index.php?ch=$1 [QSA,L]
ça fait bien en tendu une erreur 500 car ça tourne en rond donc il faudrait faire :
RewriteRule ^([^/]+)/.* /test2.php?ch=$1 [QSA,L] exeption pour index.php.*

mais comment ?

Merci encore

KJM
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Exception pour index.php, j'imagine quelque chose comme ça :
RewriteCond %REQUEST_URI% !^index.php [NC]

La condition est à placer AVANT les règles de réécriture sur lesquelles elle s'applique.

Pour le /, il suffit de le rajouter dans l'expression régulière et de le rendre facultatif en le faisant suivre d'un point d'interrogation :

RewriteRule ^([^/]+)/[^/]*/? /index.php?ch=$1 [QSA,L] 


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
73
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2012

J'ai lu http://illiweb.com/manuel/Apache_1.3_VF/mod/mod_rewrite.html mais quoi que je fasse soit ça ne se comporte pas comme voulu soir j'ai une erreur 500...

Je voudrais faire :
www.abc.com/*** => www.abc.com/test2.php?ch=*** SAUF si *** commence par test2 ou par yyy

J'ai écrit :
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_URI% !^test2.* [NC]
RewriteCond %REQUEST_URI% !^yyy.* [NC]
RewriteRule ^(.*) test2.php?ch=$1 [QSA,L

=> erreur 500

KJM
Messages postés
73
Date d'inscription
vendredi 8 avril 2005
Statut
Membre
Dernière intervention
17 janvier 2012

Pouvez-vous me dire ce qui ne va pas dans la syntaxe du htaccess ci-dessus ?

Merci

KJM
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
16
Il manque la fermeture du crochet des flags :

RewriteRule ^(.*) test2.php?ch=$1 [QSA,L]

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)