Простая регулярка для mod_rewrite - помогите - туплю опять вечером

alexhemp

Новичок
Простая регулярка для mod_rewrite - помогите - туплю опять вечером

Итак имеется последнее в списке правило для mod_rewrite

RewriteRule ^([a-zA-Z0-9_-]+)\.html$ pages.php?key=$1 [L,NC,NS]

Идея в том, что все адреса типа test.html преобразовать в
page.php?key=test

Это последний шаг обработки ЧПУ. Все было хорошо, пока не потребовались ключи содержащие точку наподобии test.begin.html и соотв нужен вызов - page.php?key=test.begin

При попытке дописать

^([a-zA-Z0-9_-\.]+)\.html$

Получил ошибку...

RewriteRule: cannot compile regular expression '^([a-zA-Z0-9_-\\.]+)\\.html$'

У меня уже опять к концу рабочего дня голова пухнет... подскажите что сделать чтобы непоследнюю точку можно было использовать...
 

sakon

П..и.н..ок
а разьве точку надо экранировать в символьном классе?
 

alexhemp

Новичок
ну это совсем плохо :)

Я чего-то не нашел упоминания какие реги используются в mod_rewrite - POSIX, Perl или свои какие-то?

-~{}~ 28.09.05 23:30:

В документации таки нашел что используются перловые реги...

Сделал пока

^(.+)\.html$

В принципе в конец нельзя точку ставить, ибо предпоследний символ - дефис, он должен быть последним, иначе он определяет диапазон.
Но вот так ^([.a-zA-Z0-9_-]+)\.html$
тоже не работает :-(

Все - пора спать...
 

Steamroller

Новичок
Дефис в символьном классе имеет собственное значение, соответственно его надо ставить либо первым, либо последним.
[-a-zA-Z....etc.]


Я чего-то не нашел упоминания какие реги используются в mod_rewrite - POSIX, Perl или свои какие-то?
В Апаче первой версии - POSIX, второй версии - Perl.

-~{}~ 29.09.05 00:09:

Но вот так ^([.a-zA-Z0-9_-]+)\.html$
тоже не работает :-(
Затестил только что это выражение, Apache 1.3.33, работает. Вероятно, ошибка где-то по соседству.
 
Сверху