Perl/lighttpd регулярен израз

Използвам regex в lighttpd за пренаписване на URL адреси, но не мога да напиша израз, който да прави това, което искам (което смятах, че е доста основно, очевидно не, вероятно пропускам нещо).

Да кажем, че имам този URL адрес: /page/variable_to_pass/ ИЛИ /page/variable_to_pass/

Искам да пренапиша URL адреса към това: /page.php?var=variable_to_pass

Вече имам правила като ^/login/(.*?)$ за обработка на конкретни страници, но исках да направя такова, което може да съответства на всяка страница, без да има нужда от един израз на страница.

Опитах това: ^/([^.?]*), но съвпада с цялото /page/variable_to_pass/ вместо само с page.

Всяка помощ се оценява, благодаря!


person Blake    schedule 24.03.2012    source източник


Отговори (2)


Този регулярен израз трябва да прави това, от което се нуждаете

/([^\/]+)/(.+)

Първото съвпадение ще бъде името на страницата, а второто - стойността на променливата

person mcsi    schedule 24.03.2012
comment
Благодаря, това съвпада и с двете, дори със завършващ / в края. Възможно ли е да се съпоставят променливи след това? Ако имам /page/var1/var2/, как бих съпоставил всичките 3 от тях? - person Blake; 24.03.2012
comment
Мисля, че можете да го промените на /([^\/]+)(?:/([^\/]+))*, така че да съответства на всички променливи - person mcsi; 24.03.2012

Опитвам:

/([^.?])+/([^.?])+/

Това трябва да ви даде две съвпадения.

person Ed Chapel    schedule 24.03.2012