Laravel docs に301/302としてリダイレクトする情報が見つかりません。
Routes.phpファイルでは次を使用します。
Route::get('foo', function(){
return Redirect::to('/bar');
});
これはデフォルトで301または302ですか?手動で設定する方法はありますか?これがドキュメントから省略される理由は何ですか?
確信が持てないときはいつでも、ソースコードでLaravelのAPIドキュメントを見ることができます。 Redirector class は、デフォルト値として_$status = 302
_を定義します。
to()
メソッドを使用してステータスコードを定義できます。
_Route::get('foo', function(){
return Redirect::to('/bar', 301);
});
_
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);
});
martinstoeckliの答えは静的な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-sbi が http://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-sbi が http://amp/swiftifsccode.com/sbi にリダイレクトされます
次のような直接リダイレクトルートルールを定義できます。
Route::redirect('foo', '/bar', 301);
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