0

我有一个奇怪的问题,我一生都无法弄清楚。首先,我从头开发了一个 PHP MVC 框架。我遇到的问题是在 exit() 调用之后我得到了一个标头重定向执行。

这是路由过程的高级视图:

  1. REQUEST_URI 被剥离,请求的控制器、方法和任何参数都设置为稍后在脚本中使用的变量。
  2. router.php 检查以确保请求的控制器是否确实存在,如果不存在则返回 false,但如果一切都检查,则返回 true
  3. 如果它返回 true,它将执行请求的控制器、方法和任何参数。
  4. 如果它返回 false,那么路由器将发送重定向到自定义 404 页面。这使用了 PHP 的 header() 函数,并且在 header("Location: *"); 之后有一个 exit();

第 4 步是问题发生的地方。请求的控制器存在,因此它执行并且请求的视图存在,因此它正确加载了所有内容,但是即使在成功加载视图后调用了 exit(),它也会执行重定向。

路由器是否有任何理由继续启动并触发重定向?

4

1 回答 1

1

我不会猜测(根据@Tomasz :),但即使您exit()的浏览器会尊重它获得的任何 http 标头,包括位置。

事实上,在我做的类似的事情中,任何错误我都会发送一个重定向标头,然后执行一个以确保重定向exit控制器中的执行不会继续。

于 2010-09-13T13:23:42.707 回答