2010-03-15 4 views
0

Les expressions régulières ont toujours été mes bêtes noires. Chaque fois que je pense que j'ai enfin compris, j'ai un nouveau problème!apache mod_rewrite problème regex avec paramètre multiple

Je veux attraper url comme ceci:

http://www.mydomain.com/boutique/blabla-1/bla-bla2/99/104 
http://www.mydomain.com/boutique/blabla1/99 

et éventuellement:

http://www.mydomain.com/boutique/blabla-1/bla-bla2/product1/99/104/55/ 

après beaucoup d'essais et d'erreurs, je suis venu avec ce qui semble fonctionner avec http://www.gskinner.com/RegExr/ mais pas apache

^.*/boutique/([a-zA-Z-]*)(/?[a-zA-Z-]*)/?([0-9]*)/?([0-9]*)/?$ boutique.php?c1=$3&c2=$4 

(Je travaillais seulement avec les deux premières URL jusqu'ici)

MES rewrite apache fichiers du journal de débogage sont impuissants:

passe par /Users/iko/Sites/mysite/boutique.php

Je n'interresse à obtenir les ids. Toute aide nous serons les bienvenus!

Merci.

+0

Quelles informations avez-vous besoin de cette URL? – Gumbo

Répondre

0
RewriteRule ^boutique/(?:[a-zA-Z][\w-]*/){1,3}/(\d+)(?:/(\d+)(?:/(\d+))?)?/?$ boutique.php?c1=$1&c2=$2&c3=$3 
+0

Merci. J'ai dû le modifier un peu semble que le groupe passif ne fonctionne pas alors ce que j'ai trouvé est boutique.php/([a-zA-Z -] *) (/? [A-zA-Z- ] * /?) {1,3} ([0-9] *) /? ([0-9] *) /? ([0-9] *) /? $ \t boutique.php? C1 = $ 3 & c2 = $ 4 & p = $ 5 [L] – user146498

0

Personnellement, j'aime écrire une règle pour chaque type que je trouve plus clair à lire (surtout si htaccess est un épouvantail de la vôtre)

-à-dire

### Rewrite rule for /boutique/blabla-1/bla-bla2/99/104 
RewriteRule ^boutique/([a-z0-9-]+)/([a-z0-9-]+)/([0-9]+)/([0-9]+) boutique.php?c1=$3&c2=$4 

Pour expliquer les différents bits ([a-z0-9 -] +) est fondamentalement toutes les lettres minuscules, les nombres et les traits d'union. Similairement ([0-9] +) est juste pour les nombres et traits d'union

Hope this helps

+0

merci. dans mon cas, comme le nombre de paramètres est fluide (entre 1 et 3) j'ai dû marquer les barres obliques comme optionnelles – user146498

+0

Cool - donc vous avez tout cela fonctionne maintenant? – Chris