Поддиректории с index.php и статикой в них.

Sergey Sholokh nginx-forum на nginx.us
Вт Апр 20 19:33:55 MSD 2010


Доброго времени суток!

Подскажите, пожалуйста, что я не так делаю.

Есть проект, который состоит из кучи директорий. В каждой  директории присутсвует index.php и каталоги со статикой, которые вызываются из индекса (пути относительные).
Проблема в том, что если не прописывать locaton для каждой директории и в нем index, то при заходе в директорию index.php вызывается (внутренний редирект) , но вот пути к статике в таком случае неправильные, от центрального корня. Если же вызвать /directory/index.php - то все ок.
C прописанными location dir1 и dir2 все работает, но директорий много и все прописывать не очень хотелось бы.
Возможно, есть правильный путь решить эту проблему, не прописывая все множество директорий как location.
Чтение док пока просветления не принесло.

Пример конфига:

server {
        listen 1.1.1.1:80 default backlog=4096 sndbuf=32k rcvbuf=16k;
        server_name some.domain www.some.domain;
        client_max_body_size 16M;
        client_header_buffer_size 16k;
        large_client_header_buffers 16 256k;
        set $root_dir "/var/www/Site";
        root $root_dir;
        index index.php;
        fastcgi_index index.php;
        access_log /var/log/nginx/some_access.log main;
        error_log /var/log/nginx/some_error.log;

location /dir1 {
        root $root_dir;
        try_files $uri $uri/ =404;
        index index.php;
        }

location /dir2 {
        root $root_dir;
        try_files $uri $uri/ =404;
        index index.php;
        }

location / {
        root $root_dir;
        try_files $uri $uri/ =404;
        if ($request_method = GET) {
                rewrite ^/(.*)/$ /$1 permanent; }
        if (-d $request_filename) {
                rewrite ^(.*[^/])$ $1/ break; }
        }

location = /index.php {
        if ($request_uri = /index.php) {
                rewrite ^ http://$host? permanent; }
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        }

location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|js|swf|pdf)$ {
        root $root_dir;
        expires 7d;
        add_header Cache-Control public;
        access_log off;
        }

location ~* \.php$ {
        try_files $uri =404;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        }
}

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,77141,77141#msg-77141




Подробная информация о списке рассылки nginx-ru