Help us understand the problem. What is going on with this article?

laravelで外部のサイトへリダイレクトする方法

必要になって調べた、外部のサイトへ様々な状況でリダイレクトする方法のまとめ
特定のページのみ作成しており、すでにある外部ドメインへリダイレクトするときに使いました。

やりたいこと
・外部のサイトへリダイレクト(外部ドメインを指定する)
 - おまけ:バリデーションでNGの場合に特定の外部サイト(外部ドメイン)へリダイレクト


外部のサイトへリダイレクト(外部ドメインを指定する)

phpだとheader関数を使用したりするかと思います

<?php
 header('Location: ' . $url, true, 301);
 exit;

laravelだとredirect()->away()で可能でした。

redirect()->away($url)

urlには前回の.envに書いた外部ドメインへもリダイレクトできました。

redirect()->away(config('test.key_name'));

おまけ:バリデーションエラー時に外部サイトへリダイレクト

laravelはバリデーションエラーの場合、自動的にユーザーを以前のページヘリダイレクトする仕様のようで、
 ・バリデーションエラー時に以前のページではなく指定のページにリダイレクトしたい
 ・なおかつ外部のドメインにしたい
この2つを実現したい場合、FormRequestで実装可能でした。

:sparkles:参考にさせていただきました
FormRequestのバリデーションエラー時のリダイレクト先をカスタマイズする

protected function getRedirectUrl()
    {
        return config('test.key_name');
    }  //バリデーションエラー時は.envで設定した外部ドメインへリダイレクトされる

また、このリダイレクトさせたいURLを.envに書いた外部ドメインにしたい場合、直接 config() のみでリダイレクトでき、
redirect()->away(config('test.key_name')); とすると Header may not contain more than a single header とエラーが出てしまいました。

 
 

validateメソッドや、validatorファサードでもできるか試したのですが、FormRequest以外はエラーがでてしまいうまくできず... :rolling_eyes:

もしvalidateメソッドや、validatorファサードでもできる方法を知っている方がいたら教えていただけると嬉しいです

 

まとめ

redirect()->away() を使う
FormRequestを使えばエラー時にリダイレクト先を任意に指定できる

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした