У меня есть следующие правила переписывания:
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, и обнаружил, что экранирование ?
и .
, похоже, не работает. Я немного сбит с толку и был бы признателен всем, кто
может пролить свет на то, почему это спасение не работает.
Огромное спасибо заранее.