Nginx位置和嵌套的Slim索引

时间:2015-07-17 09:49:53

标签: php nginx slim

使用php Slim框架并具有以下结构:

/root
    /dir_parent_1/
        /dir_child_1
            /index.php
    /dir_parent_2
        /index.php

/root/dir_parent_1/dir_child_1/index.php拥有users路线,并且 /root/dir_parent_2/index.php拥有clients路线。

我如何编写Nginx位置以匹配两种可能的组合?

我试试:

location ~ ^/root/(\w+)
{
    try_files $uri /gestionhospitales/api/$1/index.php?$query_string;
}

location ~ ^/root/(\w+)/(\w+)
{
    try_files $uri /gestionhospitales/api/$1/$2/index.php?$query_string;
}

但它们是相互排斥的。转到“/ root / dir_parent_1 / dir_child_1 / users”匹配第一个规则(因为它是第一个。如果我颠倒顺序,第二个匹配),

此外,我开始为两种情况编写规则,但我不知道如何完成它:

location ~ ^/root/(\w+)?/(\w*)
{
    try_files $uri /gestionhospitales/api/$1/$2/index.php?$query_string;
#  tried with if, rewrite, etc. But i'm not nginx expert.
}

提前致谢。

1 个答案:

答案 0 :(得分:1)

您必须设置的唯一途径是将所有内容转发到公共目录中的index.php文件。

root         /path/www.mysite.com/public_html;

try_files $uri /index.php;

此文件应包含用于boostrap Slim Framework的php代码。然后所有“路由”将由PHP和Slim根据您在index.php中的代码处理,而不是由nginx处理。

$app->get('/users', function () {
    echo "This is the user route!";
});

$app->get('/clients', function () {
    echo "This is the client route!";
});

您可以在官方文档中看到完整的示例here