如何配置nginx仅将URL中的第一个路径映射到php应用程序的特定目录?

时间:2019-03-17 05:11:40

标签: php nginx

我正在使用php Web应用程序,希望将URL映射到服务器上的文件夹,如下所示:

https://app.com/clientOne/... --> /client/...
https://app.com/clientTwo/... --> /client/...
etc

URL中clientOneclientTwo之后的所有文件夹都位于我的服务器上client下,例如clientOne/admin/被映射到client/admin/,而clientTwo/app/被映射到client/app/。我希望所有客户端共享同一应用程序,并且该应用程序将从URL确定客户端。 (我现在不想处理子域。)

仅当目录位​​于URL中时,我的nginx配置才起作用。当我引用特定的php文件时,我得到了404:

https://app.com/clientOne/admin/ (works)
https://app.com/clientOne/admin/index.php (returns 404)

我已经搜索过,但没有找到与此特定问题有关的人。我想我知道需要做什么,但是我尝试过的所有方法都没有用。这是我的标准nginx配置:

    location ~ \.php$ {
            try_files       $uri =404;
            include  fastcgi_params;
            fastcgi_pass    unix:/var/run/php-fpm/www.sock;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }

这:

    location ~ ^/(clientOne|clientTwo)/(.*)$ {
            try_files $uri $uri/ /client/$2?$query_string;
    }

我想我需要更新php位置块来解决我的问题,然后我不需要第二个位置块,但是我尝试过的所有方法都无效。我尝试将php位置块中的try_files更改为此,但这没有用:

            try_files       $uri /client/ =404;

有人知道该怎么做吗?谢谢

0 个答案:

没有答案