我正在尝试设置一个 API,以便通过 URL 访问 API“foobar” http://my-apis.com/foobar/route
。这是我目前所拥有的:
location ~ ^/foobar(/.*)$ {
root /var/www/mysite/foobar/public;
... more fastcgi stuff ...
fastcgi_param SCRIPT_FILENAME $document_root/index.php$1;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
API 正在路由到 Slim 框架应用程序,目前它成功路由到正确的 index.php,只要 URL 不以 开头,就会显示 nginx 404/403 /foobar
。但是传递给 Slim 的路由(看起来它由第 6 行的 $1 表示)仍然是完整的/foobar/route
。这意味着我必须将所有 Slim 路由附加到/foobar
,虽然我可以使用 Slim 组,但这仍然很麻烦。我希望能够只将部分传递/route
给 Slim。
有没有办法可以提取 location 指令中通配符匹配的部分?因为 $1 给出了完整路线。或者,我可以通过某种重写来做到这一点,但我对 Slim 了解不够。
任何帮助将非常感激!
谢谢!
答案1
SCRIPT_FILENAME
PATH_INFO
是脚本的路径,而不是原始 URI。脚本从或 通过解码原始 URI(使用)获取路径信息REQUEST_URI
。
这可能对你有用:
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param PATH_INFO $1;