Je ne trouve pas d'informations pour la redirection en 301/302 dans le Laravel docs .
Dans mon fichier routes.php j'utilise:
Route::get('foo', function(){
return Redirect::to('/bar');
});
S'agit-il d'un 301 ou 302 par défaut? Existe-t-il un moyen de le régler manuellement? Une idée pourquoi cela serait omis des documents?
Chaque fois que vous n'êtes pas sûr, vous pouvez consulter la documentation de l'API de Laravel avec le code source. classe du redirecteur définit un $status = 302
Comme valeur par défaut.
Vous pouvez définir le code d'état avec la méthode to()
:
Route::get('foo', function(){
return Redirect::to('/bar', 301);
});
Je mets à jour la réponse pour Laravel 5! Maintenant, vous pouvez trouver sur les documents assistant de redirection :
return redirect('/home');
return redirect()->route('route.name');
Comme d'habitude .. chaque fois que vous n'êtes pas sûr, vous pouvez jeter un œil à documentation API de Laravel avec le code source. classe de redirecteur définit un $ status = 302 comme valeur par défaut (302 est une redirection temporaire).
Si vous souhaitez avoir une redirection URL permanente ( code d'état de réponse HTTP 301 déplacé de façon permanente ), vous pouvez définir le code d'état avec la fonction redirect () :
Route::get('foo', function(){
return redirect('/bar', 301);
});
la réponse de martinstoeckli est bonne pour les URL statiques, mais pour les URL dynmaiques, vous pouvez utiliser ce qui suit.
Route::get('foo/{id}', function($id){
return Redirect::to($id, 301);
});
Exemple en direct (mon cas d'utilisation)
Route::get('ifsc-code-of-{bank}', function($bank){
return Redirect::to($bank, 301);
});
Cela redirigera http://swiftifsccode.com/ifsc-code-of-sbi vers http://swiftifsccode.com/sbi
Un exemple de plus
Route::get('amp/ifsc-code-of-{bank}', function($bank){
return Redirect::to('amp/'.$bank, 301);
});
Cela redirigera http: //amp/swiftifsccode.com/ifsc-code-of-sbi vers http: //amp/swiftifsccode.com/sbi
Vous pouvez définir une règle de routage de redirection directe comme celle-ci:
Route::redirect('foo', '/bar', 301);
À partir de Laravel 5.8, vous pouvez spécifier Route::redirect
:
Route::redirect('/here', '/there');
Par défaut, il redirigera avec le code d'état HTTP 302, ce qui signifie une redirection temporaire. Si la page est déplacée de façon permanente, vous pouvez spécifier le code d'état HTTP 301:
Route::permanentRedirect('/here', '/there');
/* OR */
Route::redirect('/here', '/there', 301);
Documents Laravel: https://laravel.com/docs/5.8/routing#redirect-routes