знак вопроса не обрабатывается в regexp

Igor Sysoev is at rambler-co.ru
Wed Oct 14 18:17:12 MSD 2009


On Wed, Oct 14, 2009 at 04:51:05PM +0300, Sergej Kandyla wrote:

> На сервере есть ссылки на некоторую динамику, которые нужно профильтровать.
> ссылки примерно такого харакетера
> 
> http://mydomain.com/dsfdasf/sfasdf/file.php?EXAMPLE_3=2
> http://mydomain.com/dsfdasf/sfasdf/file.php&EXAMPLE_=1
> 
> сделал отдельный локейшн, удовлетворяющий данному запросу.
> 
>      server_name  mydomain.com
>       location ~ ^.*(EXAMPLE_).*$ {
>                 rewrite ^ http://mydomain.com redirect;
>       }
> 
> если в запросе содержится знак вопроса '?'
> то данный регексп не обрабатывается.
> 
> пробовал также экранировать знак вопроса '\?' - не помогло.
> пробовал как через location, так и непосредственно в реврайте указать 
> такой регексп.
> 
> В чем может быть ошибка?

       if ($args ~ EXAMPLE_) {
            rewrite ^ http://mydomain.com/?  redirect;
       }

location учитывает только URI без query string по одной простой причине:
в query string можно написать чего угодно и в любом порядке, например,

     /index.html?one=1&two=2
     /index.html?two=2&one=1
     /index.html?one=1&two=2&и-ещё-чего-то-до-кучи

И как это тестировать ?


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list