2013-12-24 6 views
1

я в настоящее время пытается переписать так:Nginx правила перезаписи не работают/игнорируются

index.php?page=Example&paramX=1&paramY=2 

в

index.php/Example/1/?paramY=2 

Однако, это не работает:

rewrite ^index\.php/\?page=Example&paramX=([0-9]+)&paramY=([0-9]+)$ /index.php/Example/$arg_paramX/?paramY=$arg_paramY permanent; 

В apache2 в настоящее время я использую

RewriteCond %{QUERY_STRING} page=Example&paramX=([0-9]+)&paramY=([0-9]+) 
RewriteRule ^index\.php$ /index.php/Example/%1/?paramY=%2 [R=permanent,L] 

который работает.

ответ

0

Вы не можете соответствовать параметры строки запроса, как, что в Nginx, вы должны попытаться проверить отдельные аргументы, используя что-то вроде if:

location /index.php { 
    if ($arg_page = "Example") { 
     rewrite^/index.php/Example/$arg_paramX/?paramY=$arg_paramY permanent; 
    } 
} 

Если вы абсолютно необходимо, чтобы убедиться, что paramX и paramY: [0-9]+, тогда вам нужно сделать какой-то взлом для вложенных операторов IF, что-то вроде this.

+0

Итак, нет другого способа, кроме нескольких операторов if для нескольких правил? –

+0

@ user2368182 нет, если вы хотите совпадать с строкой запроса –

Смежные вопросы