我有一个PHP API,它存在于URL路径/api
之外,在OSX上,以下配置正常工作:
location /api {
try_files $uri /api/index.php$is_args$args;
fastcgi_pass PHP:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
然而,Ubuntu上的相同位置块似乎导致:
[错误] 9#0:* 3重写或内部重定向循环,同时内部重定向到“/api/index.php”
如果我显式调用http://localhost/api/index.php
,使用目录引用http://localhost/api
或者如果我将一些参数传递给index.php脚本,调用类似于:http://localhost/api/actions/recent
,则无论如何。
任何人都可以帮助我理解为什么Ubuntu和OSX会有所不同吗?怎么样绕过这个重写错误?
可以在此处找到OSX和Ubuntu的完整详细信息:
答案 0 :(得分:0)
我最初的假设是OSX和Ubuntu表现不同并没有证明这一点。
对我而言,转折点是对这一错误的起源有了更多了解。虽然错误的文本并没有完全消除,但它基本上表明它已经尝试了 try_files 行中列出的模式中的所有变体。事实上,如果没有找到匹配项,很多人会在这样的行中添加 = 404 以解决更有意义的错误。
一旦我意识到错误实际上是什么意思,它就让我意识到传递给FPM的路径与FPM所期望的目录结构不匹配。愚蠢......然而所有的硬错误通常都有愚蠢的因素。 :)