web-dev-qa-db-ja.com

Laravel、301および302としてリダイレクトする方法

Laravel docs に301/302としてリダイレクトする情報が見つかりません。

Routes.phpファイルでは次を使用します。

Route::get('foo', function(){ 
    return Redirect::to('/bar'); 
});

これはデフォルトで301または302ですか?手動で設定する方法はありますか?これがドキュメントから省略される理由は何ですか?

37
Justin

確信が持てないときはいつでも、ソースコードでLaravelのAPIドキュメントを見ることができます。 Redirector class は、デフォルト値として_$status = 302_を定義します。

to()メソッドを使用してステータスコードを定義できます。

_Route::get('foo', function(){ 
    return Redirect::to('/bar', 301); 
});
_
78
martinstoeckli

Laravel 5!の答えを更新しました!これでドキュメントで見つけることができます リダイレクトヘルパー

return redirect('/home');

return redirect()->route('route.name');

いつものように..不確かなときはいつでも、ソースコードでLaravelの APIドキュメント を見ることができます。 Redirector class は、$ status = 302をデフォルト値として定義します(302は一時的なリダイレクトです)。

永続的なURLリダイレクション( HTTP応答ステータスコード301 Moved Permanently )が必要な場合、 redirect()関数 を使用してステータスコードを定義できます。

Route::get('foo', function(){ 
    return redirect('/bar', 301); 
});
14

martinstoeckliの答えは静的なURLには適していますが、動的なURLには以下を使用できます。

動的URLの場合

Route::get('foo/{id}', function($id){ 
    return Redirect::to($id, 301); 
});

ライブ例(私のユースケース)

Route::get('ifsc-code-of-{bank}', function($bank){ 
    return Redirect::to($bank, 301); 
});

これにより、 http://swiftifsccode.com/ifsc-code-of-sbihttp://swiftifsccode.com/sbi にリダイレクトされます

もう1つの例

Route::get('amp/ifsc-code-of-{bank}', function($bank){ 
    return Redirect::to('amp/'.$bank, 301); 
});

これにより、 http://amp/swiftifsccode.com/ifsc-code-of-sbihttp://amp/swiftifsccode.com/sbi にリダイレクトされます

4
Abhishek Goel

次のような直接リダイレクトルートルールを定義できます。

Route::redirect('foo', '/bar', 301);
3
StR

Laravel 5.8では、Route::redirect

Route::redirect('/here', '/there');

デフォルトでは、一時的なリダイレクトを意味する302 HTTPステータスコードでリダイレクトされます。ページを永続的に移動する場合、301 HTTPステータスコードを指定できます。

Route::permanentRedirect('/here', '/there');
/* OR */
Route::redirect('/here', '/there', 301);

Laravel docs: https://laravel.com/docs/5.8/routing#redirect-routes

0
Connor Leech