Я не могу писать location'ы для каждой папки... Вообщем, вот мой конфиг:
server {
listen 8080;
server_name glinka.fm;
root /home/renat/www/glinka;
index index.php index.html;
location / {
# все файлы ищутся в /webroot, если файла нет то /engine/index.php
try_files /webroot/$uri /engine/index.php;
# однако сюда попадают и запросы вида /cms/ а этого не хочется
}
location /cms/ {
# все файлы типа /cms/css/style.css ищутся в /webroot/cms/webroot/$1
rewrite /cms/(.*) /webroot/cms/webroot/$1;
if (!-f $request_filename) {
# если файл в папке /webroot/cms/webroot не найден то запускаем /webroot/cms/engine.php
rewrite (.*) /webroot/cms/engine/index.php;
}
}
location ~ \.php$ {
include fastcgi.conf;
}
}
Вот и получается что файлы /cms/* ищутся вовсе не в /webroot/cms/webroot/ а в /webroot/
Если закомменить location / {} то для /cms/* запросов всё работает отлично.