Здравствуйте,
имеются директории:
/home/data/ - в этой папке находятся файлы (напр. index.php, conf.php, admin/index.php), которые нужно скрыть от юзера (но запускать он их может).
/home/user/ - в этой папке файлы юзера.
Задача:
ЕСЛИ (запрошенный http адрес соответствует файлу в папке /home/user/)
{
ТО вернуть клиенту этот файл
}
ИНАЧЕ
{
ЕСЛИ (файл /home/user/index.php существует)
{
ТО вызвать скрипт /home/user/index.php для обработки запроса
}
ИНАЧЕ
{
указать root -директорию /home/data/ и
ЕСЛИ (запрошенный http адрес соответствует файлу в папке /home/data/)
{
ТО вернуть клиенту этот файл
}
ИНАЧЕ
{
вызвать скрипт /home/data/index.php для обработки запроса
}
}
}
Т.е. если юзер создает файл, например,
/home/user/index.php, то при открытии сайта должен запускаться именно этот файл. Если же этого файла нет, то запускаться должен
/home/data/index.php и тд. При этом в папках кроме php-файлов могут находиться файлы css, картинки и другие.
Подскажите пожалуйста рабочий конфиг для такой задачи.
Пробовал через try_files пока ничего не получается...
Конфиг для "одиночного" режима:
location / {
index index.php;
try_files $uri $uri/ /index.php?$query_string;
}
location /admin {
try_files $uri /admin/index.php?$query_string;
}
location ~ [^/]\.php(/|$) {
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_pass 127.0.0.1:9023;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}