Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
революционные нанотех нологии!
Поскольку я уже не могу смотреть без боли на кучи реврайтов,
то сегодня я изобрел революционную директиву file_match.
Вместо
location / {
if (-f $request_filename) {
break;
}
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://mongrel;
break;
}
}
предлагается писать
location / {
file_match $uri $uri/index.html $uri.html
@mongrel;
}
location @mongrel {
proxy_pass http://mongrel;
}
Для любителей Drupal/Joomla:
location / {
file_match $uri @drupal;
# то же самое, что
# error_page 404 = @drupal; log_not_found off;
}
location ~ \.php$ {
file_match $uri @drupal;
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME /path/to$script_filename;
}
location @drupal {
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME /path/to/index.php;
}
file_match перебирает параметры и пытается найти соответствие на файловой
системе. Если файл найден, то URI меняется на этот параметр и обработка
делается в том же location'е. Последний параметр - fallback.
--
Igor Sysoev
http://sysoev.ru/en/
|