我正在使用 Slim 3,它使用 nikic/FastRoute,并且遇到了这样的端点问题:
$app->get('/count/{url}', function ($request, $response) use ($curl) {
$controller = new Proximate\Controller\CountUrl($request, $response);
$controller->setCurl($curl);
return $controller->execute();
});
我的计划是将一个 urlencoded URL 传递{url}
到控制器中并将其注入到控制器中。例如,对于http://www.example.com
,请求将是:
curl \
--verbose \
http://localhost:8080/count/http%3A%2F%2Fwww.example.com%2F
但是,这会以 404 失败,因此显然不匹配。这也失败了:
curl \
--verbose \
http://localhost:8080/count/http%3A%2F%2Fwww.
然而,奇怪的是,这确实匹配(即没有尾随点):
curl \
--verbose \
http://localhost:8080/count/http%3A%2F%2Fwww
我最初认为是 urlencoded 斜杠混淆了它 ( %2F
),但在没有这些字符的情况下尝试过,我发现实际上它是字符串中任何位置的点。为什么这不匹配,我是否需要正则表达式匹配才能使其正常工作?
我正在为这个应用程序使用 PHP 内置的 Web 服务器。