URL Rewriting

jmp kjm Messages postés 73 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 17 janvier 2012 - 14 oct. 2010 à 15:54
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 20 oct. 2010 à 14:33
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
14 oct. 2010 à 20:54
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à ;)
0
jmp kjm Messages postés 73 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 17 janvier 2012
14 oct. 2010 à 21:59
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
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
14 oct. 2010 à 23:08
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à ;)
0
jmp kjm Messages postés 73 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 17 janvier 2012
15 oct. 2010 à 14:47
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
15 oct. 2010 à 14:58
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à ;)
0
jmp kjm Messages postés 73 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 17 janvier 2012
16 oct. 2010 à 15:45
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
0
jmp kjm Messages postés 73 Date d'inscription vendredi 8 avril 2005 Statut Membre Dernière intervention 17 janvier 2012
20 oct. 2010 à 12:51
Pouvez-vous me dire ce qui ne va pas dans la syntaxe du htaccess ci-dessus ?

Merci

KJM
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 oct. 2010 à 14:33
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à ;)
0
Rejoignez-nous