自定义PHP路由本地正常但部署至Microsoft IIS后失效的问题求助
自定义PHP路由本地正常但部署至Microsoft IIS后失效的问题求助
各位大佬好,我遇到个头疼的问题:我自己写了个没依赖任何现成框架的PHP项目,本来以为部署到Microsoft IIS上是分分钟的事,结果发现本地用PHP内置Web服务器跑起来完全正常的路由逻辑,到IIS上就彻底失效了,折腾好久都没搞定,想请教下有没有人碰到过类似情况?
下面是我的路由函数代码:
function router(string $route, mixed $callback) :bool { $url_parts = explode('/', trim($_SERVER['REQUEST_URI'], '/')); $requested_route = implode('/', $url_parts); $route_regex = preg_replace('/:[^\/]+/', '([^\/]+)', $route); if (preg_match("~^$route_regex$~", $requested_route, $matches)) { call_user_func_array($callback, array_slice($matches, 1)); return true; } return false; }
这是我调用路由函数的方式(举个示例):
$routeFound = router('', static function() { $pagesInstance = new Pages(); $pagesInstance->login(); }); // 其他路由调用类似: // $routeFound = router('user/:id', static function($id) { // // 处理用户详情逻辑 // });
本地用php -S localhost:8000测试时,不管是根路径还是带参数的路由都能正常匹配,回调函数也能正确执行,但部署到IIS之后,除了根路径偶尔能访问,其他路由要么返回404,要么根本触发不了对应的回调。有没有大佬知道IIS这里需要做什么特殊配置?或者我的路由函数哪里需要针对IIS做调整?
备注:内容来源于stack exchange,提问作者DevelopWithHappiiE
相关产品推荐
相关产品推荐

