我在本地项目中有这条路线:
/test/test2.php?param1=a¶m2=b....
我想将其重定向到外部网址:
http://test.com/test/test2.php?param1=a¶m2=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。
答案 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);
}