我可以让CakePHP根据特定条件返回合适的状态代码吗?
这个问题和我以前的帖子有点关系 经过深思熟虑,我正在探索在我的Cake应用程序中使用自定义404脚本的选项,当URL没有映射到任何控制器/操作时,就会使用该脚本。这个脚本将在这里检查$This->,并在重定向数据库中查找它。如果找到匹配项,它将跟踪特定的“促销”代码并重定向 我在想身份代码。我可以根据特定条件使脚本返回合适的状态代码吗?例如:我可以让CakePHP根据特定条件返回合适的状态代码吗?,cakephp,http-status-code-404,Cakephp,Http Status Code 404,这个问题和我以前的帖子有点关系 经过深思熟虑,我正在探索在我的Cake应用程序中使用自定义404脚本的选项,当URL没有映射到任何控制器/操作时,就会使用该脚本。这个脚本将在这里检查$This->,并在重定向数据库中查找它。如果找到匹配项,它将跟踪特定的“促销”代码并重定向 我在想身份代码。我可以根据特定条件使脚本返回合适的状态代码吗?例如: URL匹配重定向-返回301 URL确实没有目的地-返回404 我能做这个吗 编辑: 这个怎么样?有人看到它有什么问题吗?我把它放在app_控制器中 fu
function appError($method, $params) {
//do clever stuff here
}
这应该行得通。假设您在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;
}
}
?>
祝你好运 这应该行得通。假设您在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;
}
}
?>
祝你好运 我总是创建app\views\errors\missing\u action.ctp和app\views\errors\missing\u controller.ctp 当url未映射到控制器或其方法时,Cake将自动显示其中一个视图
除非您没有给出错误代码,否则这将非常有效 我总是创建app\views\errors\missing\u action.ctp和app\views\errors\missing\u controller.ctp 当url未映射到控制器或其方法时,Cake将自动显示其中一个视图
除非您没有给出错误代码,否则这将非常有效 我想补充费利克斯奇的答案 此版本向浏览器输出404错误:
class AppError extends ErrorHandler
{
function _outputMessage($template)
{
if ($template === 'error404') {
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch('legacy_urls/map', array('broken-url' => '/'.$params['url']));
return;
}
parent::_outputMessage($template);
}
}
我想补充费利克斯奇的答案 此版本向浏览器输出404错误:
class AppError extends ErrorHandler
{
function _outputMessage($template)
{
if ($template === 'error404') {
$Dispatcher = new Dispatcher();
$Dispatcher->dispatch('legacy_urls/map', array('broken-url' => '/'.$params['url']));
return;
}
parent::_outputMessage($template);
}
}