Поддиректории с 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