web-dev-qa-db-fra.com

Laravel, comment rediriger en 301 et 302

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?

37
Justin

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); 
});
78
martinstoeckli

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); 
});
14

la réponse de martinstoeckli est bonne pour les URL statiques, mais pour les URL dynmaiques, vous pouvez utiliser ce qui suit.

Pour les URL dynamiques

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

4
Abhishek Goel

Vous pouvez définir une règle de routage de redirection directe comme celle-ci:

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

À 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

0
Connor Leech