NGiNX:PHP文件从其他位置+回退到引导index.PHP


NGiNX: PHP files from an other location + fallback to bootstrap index.php

我有两个结构相同的目录。目录A有所有文件,目录B只有不同于A的文件(即其他徽标.png)。此外,我正在运行一个ZendFramework,它有一个管理和管理模块,应该在其中触发引导程序(index.php)。

因此,www.my.comwww.my.com/admin/www.my.com/management应该触发引导文件,所有其他位置都应该首先在目录A中查找,然后在B中查找,php文件应该从这两个文件夹中运行。

为了解决这个问题,我找了好几个小时,但我认为一定有更好或更简单的方法。

有吗?

奇怪的是,要么是ZF的index.php被下载而不是执行,要么是其他下载的php文件没有执行。这个把戏在location ~* '.php$中发挥了作用。

下面是我的配置文件

server {
    ...
    root /var/www/clients/B/public/;
    # ZendFramework run bootstrap index.php
    location ~ ^/(management|admin)(?:/|'z) {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~* '.php$ {
        include php.conf;
        try_files $uri $uri/ @fallbackPHP;
    }
    location / {
        try_files $uri $uri/ @fallback;
    }
    location @fallback {
        root /var/www/clients/A/public/;
    }
    location @fallbackPHP {
        root /var/www/clients/A/public/;
        include php.conf;
    }
}

以及附带的php.conf

try_files $uri =404;
fastcgi_index index.php;
fastcgi_pass php5-fpm-sock-B;
include /etc/nginx/fastcgi_params;