NginX PHP 位于二级子目录中

NginX PHP 位于二级子目录中

我在 中安装了 Laravel。index.php与 laravel 一样/srv/http/v1位于其中。它是使用 php-fpm 运行的 nginx。/srv/http/v1/public

它应该映射到这个二级子目录app.example.com/api/v1

app.excampe.com/api/v1它可以毫无问题地被调用。但是例如app.example.com/api/v1/anythingnginx 返回 404。该路由存在于 laravel 内部,如果不存在,则 404 应该是 laravel 的路由。

我当前位置的 nginx 配置是

location /api/v1 {
    include /etc/nginx/php_fastcgi_location.conf;
    alias /srv/http/v1/public;
    index index.php;
    try_files $uri $uri/ /api/v1/index.php?$query_string;
}

我猜想 try_files 有问题,但我毫无头绪 :-( 因此我欢迎有用的提示。

答案1

我自己找到了一个解决方案:

location /api/v1 {
    include /etc/nginx/php_fastcgi_location.conf;
    alias /srv/http/v1/public;
    index index.php;

    try_files $uri $uri/ @apiv1;
}

location @apiv1 {
    rewrite /api/v1/(.*)$ /api/v1/index.php?/$1 last;
}

虽然我通过反复试验发现了这一点,但如果有人能解释问题的原因和解决方案我会很高兴。

相关内容