regex проблема с helicon ape на сервере windows 2008 - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть следующие правила переписывания:

RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php\?(.*)  /$2.php?shop=$1&$3 [NC,L]
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php        /$2.php?shop=$1 [NC,L] 
RewriteRule ^([a-zA-Z0-9]*)/$  /index.php?shop=$1 [L,NC] 
RewriteRule ^([a-zA-Z0-9]*)$   /index.php?shop=$1 [L,NC] 

В результате должен перенаправить следующее:

www.site.com/Sells 
    -> /index.php?shop=Sells [works] 

www.site.com/Sells/menu.php?Cat=1 
    -> /menu.php?shop=Sells&Cat=1 [failing] 
    -> /menu.php?shop=Sells [which is 'wrong'] 

Последний пример должен совпадать с перезаписью [1] ...

Я проверил правила с помощью тестера регулярных выражений, поставляемого с ape, и обнаружил, что экранирование ? и ., похоже, не работает. Я немного сбит с толку и был бы признателен всем, кто может пролить свет на то, почему это спасение не работает.

Огромное спасибо заранее.

Ответы [ 3 ]

1 голос
/ 11 ноября 2010
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php\?(.*)  /$2.php?shop=$1&$3 [NC,L]
RewriteRule ^([a-zA-Z0-9]*)/([a-zA-Z0-9]*)\\.php        /$2.php?shop=$1 [NC,L] 

Слишком много побега.Измените \\.php на \.php.

0 голосов
/ 24 ноября 2010

Флаг QSA отсутствовал!он добавляет строку запроса, и я забыл вставить ее !!!

Двойные косые черты, которые я добавил в качестве предварительного просмотра, не отображали одиночные!

0 голосов
/ 11 ноября 2010

Вы, кажется, избегаете \, который предназначен, чтобы избежать.(у вас есть \. который читается как \ и любая буква / символ)

...