我可以根据特定条件使CakePHP返回合适的状态代码吗?

Chr*_*len 1 cakephp http-status-code-404

这个问题与我在CakePHP中处理Alias URL的旧帖子略有关系

经过深思熟虑后,我正在探索在我的Cake App中使用自定义404脚本的选项,当URL未映射到任何控制器/操作时就会达到该脚本.这个脚本会检查$ this-> here并在重定向数据库中查找.如果找到匹配项,它将跟踪特定的"促销"代码并重定向.

我在考虑状态代码.我可以根据特定条件使脚本返回合适的状态代码吗?例如:

  1. URL与重定向匹配 - 返回301
  2. URL确实没有目标 - 返回404.

我可以这样做吗?

编辑:

那这个呢?有人看到任何问题吗?我把它放在app_controller中.

function appError($method, $params) {

    //do clever stuff here

}
Run Code Online (Sandbox Code Playgroud)

Fel*_*fer 6

这应该工作.假设您在LegacyUrls :: map()控制器操作中重定向404.代码需要存储在app/app_error.php中:

<?php
class AppError extends ErrorHandler{
    function error404($params) {
        $Dispatcher = new Dispatcher();
        $Dispatcher->dispatch('/legacy_urls/map', array('broken-url' => '/'.$params['url']));
        exit;
    }

    function missingController($params) {
        $Dispatcher = new Dispatcher();
        $Dispatcher->dispatch('/legacy_urls/map', array('broken-url' => '/'.$params['url']));
        exit;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

祝好运!