未找到带点(IP 地址)的路由,returns 404

Route with dot (IP address) not found, returns 404

我用Lumen 5.4.

我的路线是这样设置的:

$app->get('/ip/{ip}', GeoIpController::class . '@show');

{ip}路由参数应该是一个IP地址,里面有点。但是,当路线中有点时似乎存在问题。它 returns 404 未找到错误。

我知道我可以将 IP 地址作为简单的 GET 请求参数传递,但希望 IP 成为 URL 的一部分并像路由参数一样处理。

出于测试目的,我使用 php -S localhost:8080 -t public 来为应用程序提供服务。

这是 PHP 内置服务器的限制,不受 Lumen(或 Laravel、Slim 或任何其他 frameworks/apps 路由器的限制。您可以查看 PHP bug report here.

基本上,如果 URL 在脚本名称后的 url 中有一个点,内置服务器会将请求视为静态文件请求,并且它不会真正尝试 运行 通过申请。

这个请求在真实的网络服务器(apache、nginx)上应该可以正常工作,但是当运行在PHP的内置开发网络服务器上时它会失败。