我使用的是Slim Framework 2.4.2,我的.htaccess看起来像这样
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
我在路由以index.php结尾的路径时遇到了一些麻烦。出于遗留支持的原因,我需要能够将/soap/index.php
路由到我的自定义代码,但它会继续运行到我的notFound
处理程序。
我的/index.php
$app->get('/soap/index.php', function () {
echo "HERE";
});
但是,当我在浏览器中转到/soap/index.php
时,会得到Slim的404 Not Found处理程序。我尝试将路线改为/soap/index2.php
,这让我可以看到" HERE"在浏览器中,但是当我使用/soap2/index.php
时,我得到与原始相同的结果。 /soap/
目录仍然存在,但/soap2/
没有,因此它似乎不是Apache导致问题,因为两者都返回相同的结果,即Slim 404处理程序。看起来Slim为任何进入index.php的路线提供了404。
我还尝试创建一个/soap/
路线,看看当我在浏览器中访问/soap/index.php
时Slim是否尝试使用它,但这仍然给了我一个404。
现在,我将尝试让404处理程序检测问题并执行操作。
答案 0 :(得分:0)
在notFound
处理程序中,我得到" /x.php"来自$app->request->getPathInfo()
的回复。当我在前面添加更多字母时,它们最终会出现在字符串中。它会剪切前9个字符,即文件名的长度。经过一番观察,这是一个已知的错误。
据GitHub here报道。
更新到最新的Slim框架解决了这个问题。