web-dev-qa-db-ja.com

外部URLへのsymfonyリダイレクト

Symfonyアクション内で外部URLにリダイレクトするにはどうすればよいですか?

私はこのオプションを試しました:

1- return $this->redirect("www.example.com");

エラー:「GET /www.example.com」のルートが見つかりません

2- $this->redirect("www.example.com");

エラー:コントローラーは応答を返す必要があります(nullが指定されています)。

3- $response = new Response();
$response->headers->set("Location","www.example.com");
return $response

エラーはありませんが、空白ページです!

18
Saman Mohamadi

あなたの質問への答えは公式のSymfonyの本にあります。

http://symfony.com/doc/current/book/controller.html#redirecting

public function indexAction()
{
    return $this->redirect('http://stackoverflow.com');
    // return $this->redirect('http://stackoverflow.com', 301); - for changing HTTP status code from 302 Found to 301 Moved Permanently
}

"URL"とは何ですか?このパターンのルートを本当に定義しましたか?そうでない場合、見つからないというエラーは絶対的に正しいです。 外部サイトにリダイレクトする場合は、常に絶対URL形式を使用します。

31
kba

Responseの代わりにRedirectResponseを使用する必要があります

use Symfony\Component\HttpFoundation\RedirectResponse;

その後:

return new RedirectResponse('http://your.location.com');
24
Artamiel