我在 中安装了 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/anything
nginx 返回 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;
}
虽然我通过反复试验发现了这一点,但如果有人能解释问题的原因和解决方案我会很高兴。