Symfony2 - 将路由重定向到外部URL

时间:2016-06-03 12:30:08

标签: php symfony url-redirection

我在本地项目中有这条路线:

/test/test2.php?param1=a&param2=b....

我想将其重定向到外部网址:

http://test.com/test/test2.php?param1=a&param2=b....

如何使用Symfony?

我试图在没有控制器的情况下直接使用路由

test:
path: /test/{rest}
defaults:
    _controller: FrameworkBundle:Redirect:redirectUrl
    path: http://test.com/{rest}
    permanent: true

但我失去了参数:test2.php?param1 = a& param2 = b ....

我还试图使用控制器Action:

路由:

test:
path: /test/{rest}
defaults:
    _controller: MyBundle:Default:test

控制器:

public function oaiAction($rest)
{
    return $this->redirect('http://test.com/'.$rest);
}

但我失去了参数。

有什么想法吗?我只需要通过保留所有参数将本地项目基本URL更改为远程URL。

2 个答案:

答案 0 :(得分:3)

在您的控制器中,执行以下操作:

use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller
{
    public function oaiAction(Request $request, $rest)
    {
        $parameters = http_build_query($request->query->all());
        return $this->redirect('http://stackoverflow.com/?'.$parameters);
    }
}

这将使用参数重定向。

答案 1 :(得分:0)

我能用一个简单的正则表达式来做到这一点:

public function testAction()
{       
    $route = $this->getRequest()->get('_route');
    $url = $this->getRequest()->getUri();
    $url = preg_replace('/^(.*?)\/test/i', 'http://test.com/test', $url);

    return $this->redirect($url, 301);
}