我正在使用symfony 1.4。
当404错误发生时,我需要重定向某些urls。假设用户正在寻找url http://example.com/oldurl,但它不存在,我想检查此url是否设置为重定向。如果url被设置为重定向,我想将其重定向到该url。
问:我应该连接到哪个事件来获取有关被重定向到404错误页面的请求的url的信息?
附注:如果页面不存在,我们只想检查重定向。我们不想为每个请求运行“检查”,只有当页面找不到的时候!
非常感谢!
发布于 2012-04-13 05:30:38
Symfony在每次找不到页面时触发一个事件:controller.page_not_found
。
您可以在文档中找到它:http://www.symfony-project.org/reference/1_4/en/15-Events#chapter_15_sub_controller_page_not_found
编辑:
您可以通过调用上下文在侦听此事件的方法中检索url。就像这样:
$context = sfContext::hasInstance() ? sfContext::getInstance() : null;
if(null !== $context)
{
$requested_url = $context->getRequest()->getUri();
}
你可以仔细看看这个插件的sfErrorNotifierPlugin,它捕获了异常和404错误,并发送了一封电子邮件以获取报告。看看how they handle 404 error吧。
发布于 2012-04-12 22:44:47
我不知道在执行堆栈中准确地挂接在哪里,但我知道通过路由的一般更干净的方法。如果你在执行路由时,代码中还没有默认的路由规则(因为实际上你不应该这么做),那么在你的应用程序routing.yml
中(在最后),它就像下面这样简单:
catch_all:
url: /*
param: { module: yourModule, action: handleNotFound }
https://stackoverflow.com/questions/10132891
复制相似问题