Проблема регулярного выражения apache mod_rewrite с несколькими параметрами - PullRequest
0 голосов
/ 15 марта 2010

Регулярные выражения всегда были моими любимыми мозолями. Каждый раз, когда я думаю, что наконец-то понял, у меня возникает новая проблема!

Я хочу поймать URL так:

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

и в конечном итоге:

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

после многих попыток и ошибок, я пришел с этим, который, кажется, работает с http://www.gskinner.com/RegExr/, но не в Apache

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

(пока я работал только с первыми двумя URL)

МОИ файлы отладки журнала переписывания apache бесполезны:

пройти через /Users/iko/Sites/mysite/boutique.php

Меня интересует только получение идентификаторов. Мы будем рады любой помощи!

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 марта 2010

Лично мне нравится писать правила для каждого типа, так как мне удобнее читать (особенно, если htaccess - ваш багбир)

т.е.

### 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

Чтобы объяснить разные биты ([a-z0-9 -] +) - это все строчные буквы, цифры и дефисы. Аналогично ([0-9] +) только для цифр и дефисов

Надеюсь, это поможет

0 голосов
/ 15 марта 2010
RewriteRule ^boutique/(?:[a-zA-Z][\w-]*/){1,3}/(\d+)(?:/(\d+)(?:/(\d+))?)?/?$ boutique.php?c1=$1&c2=$2&c3=$3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...