我在重定向到其他网站时遇到问题。当我重定向时,我看到消息:“重定向到......”。为什么?真的我不能没有问题地重定向到网站吗?
我明白了: Is it possible to change the default redirect message in Symfony?
我的代码:
/**
* @Route("/project/{url}/{link}/", name="page_show")
* @Template("base.html.twig")
*/
public function pageAction($link, $url) {
if ($link == '...') {
$redrect = new RedirectResponse('http://...');
return $redrect;
}
也许我是白痴而且看不到解决方案......
答案 0 :(得分:1)
我不确定您是否可以将@Template("base.html.twig")
与重定向响应结合使用。尝试删除@template
注释,并在操作结束时执行base.html.twig渲染:
/**
* @Route("/project/{url}/{link}/", name="page_show")
*/
public function pageAction($link, $url) {
if ($link == '...') {
$redrect = new RedirectResponse('http://...');
return $redrect;
}
// Maybe add the proper path "BundleName:DirectoryName:base.html.twig"
return $this->render('base.html.twig');
}
答案 1 :(得分:1)
仔细阅读
首先,将模板301.html.twig创建到Acme / FooBundle / Resources / views / Error /中,并附上您想要的内容。
下面: Is it possible to change the default redirect message in Symfony?
答案 2 :(得分:1)
重定向到另一个网站:
public function pageAction(Request $request)
{
return $this->redirect('https://google.com');
}
答案 3 :(得分:1)
如果在开发环境中发生这种情况,则您已将intercept_redirects
配置选项设置为true
。按照http://symfony.com/doc/current/reference/configuration/web_profiler.html
false
如果在生产环境中发生这种情况,原因是RedirectResponse
有一些硬编码的HTML内容来执行重定向。请参阅以下代码行:https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/HttpFoundation/RedirectResponse.php#L86-L96
在1秒钟内,您会看到重定向到... 消息。可以更改此消息,但这需要您付出很多努力。这里解释了一切:Is it possible to change the default redirect message in Symfony?
更新:在this discussion in the Symfony repository中有更多相关信息。重定向应该是即时的,因为它应该使用响应头中提供的信息。如果发生错误,则使用硬编码的HTML内容。因此,您可能需要调试响应没有获得正确的重定向标头的原因。
答案 4 :(得分:0)
您的问题的答案在Symfony官方书中。
http://symfony.com/doc/current/book/controller.html#redirecting
public function pageAction()
{
return $this->redirect('http://stackoverflow.com');
}
答案 5 :(得分:0)
除非你真的热衷于使用Symfony重定向' RedirectResponse类,你可以随时继续使用旧的PHP:
function redirectUrl($url, $replace=true, $status=302){
header("Location : ".$url, $replace, $status);
exit();
}
// usage example
redirectUrl("http://www.google.com");
这不仅像魅力一样,而且与Symfony的内部功能相比非常快,因为只有一个呼叫+死亡/退出。
详细了解PHP的header功能。
但是,由于此方法与框架完全分离,因此Symfony分析器无法拦截您的重定向,因此开发人员工具栏不会注意到/显示此重定向。这取决于你想要什么。