nginx + rewrite (нужно упростить)

grin

Новичок
nginx + rewrite (нужно упростить)

Всем привет,

помогите упростить rewrite правила для nginx
Код:
rewrite  "^/(.+?)/:(s|b|p|c)([0-9]+)$"                                                              "/index.php?op=sections&act=show&$2=$3"                                         last;
rewrite  "^/(.+?)/:(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+)$"                                            "/index.php?op=sections&act=show&$2=$3&$4=$5"                                   last;
rewrite  "^/(.+?)/:(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+)$"                          "/index.php?op=sections&act=show&$2=$3&$4=$5&$6=$7"                             last;
rewrite  "^/(.+?)/:(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+)$"        "/index.php?op=sections&act=show&$2=$3&$4=$5&$6=$7&$8=$9"                       last;
одной регуляркой это можно сделать? еще проблема, максимум может быть 9 переменных в правиле, т.е. если добавиться еще переменная, ничего не будет работать.

спасибо.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?q=$1 last;
}

Что-нибудь еще?
В магазин сходить?
Пивка принести?
За сигаретами сбегать может?
 

grin

Новичок
т.е. потом парсить q в самом php? ну так то понятно, хотел средствами nginx :)

-~{}~ 21.12.09 19:20:

чтобы потом просто из $_GET :)
 

MiksIr

miksir@home:~$
Парсить в PHP правильнее будет. А вызывать так
Код:
location / {
  try_files $uri $uri/ @php;
}
location * \.php$ {
  try_files $uri @php;
  fastcgi_param  SCRIPT_FILENAME  /...$fastcgi_script_name;
  fastcgi_pass ... ;
}
location @php {
  fastcgi_param  SCRIPT_FILENAME  /.../index.php;
  fastcgi_pass ... ;
}
И парсить REQUEST_URI. Ну или fastcgi_param QUERY_STRING q=$uri&$args; если хочется в _GET['q'] это получить.
 

Alexandre

PHPПенсионер
можно как-то так:
Код:
location ~ /(.+?)/:(s|b|p|c)([0-9]+) {
  
  fastcgi_param  SCRIPT_FILENAME  /...$fastcgi_script_name;
  fastcgi_param arg[name]  $1;
  fastcgi_param arg[code]  $2;
  fastcgi_param arg[num]  $3;
 ...
  fastcgi_pass ... ;
}
все параметры будут в переменной $_SERVER
 
Сверху