我找不到Laravel docs中重定向为301/302的信息。
在我的routes.php文件中,我使用:
Route::get('foo', function(){
return Redirect::to('/bar');
});
默认情况下这是301还是302?有没有办法手动设置它?知道为什么会从文档中省略这个吗?
答案 0 :(得分:77)
每当您不确定时,您可以查看Laravel的API文档和源代码。 Redirector class将$status = 302
定义为默认值。
您可以使用to()
方法定义状态代码:
Route::get('foo', function(){
return Redirect::to('/bar', 301);
});
答案 1 :(得分:13)
我更新了Laravel 5的答案! 现在,您可以在文档redirect helper上找到:
return redirect('/home');
return redirect()->route('route.name');
像往常一样......每当你不确定时,你可以看一下带有源代码的Laravel API documentation。 Redirector class将$ status = 302定义为默认值(302是临时重定向)。
如果您希望拥有永久网址重定向(HTTP response status code 301 Moved Permanently),则可以使用redirect() function定义状态代码:
Route::get('foo', function(){
return redirect('/bar', 301);
});
答案 2 :(得分:4)
martinstoeckli的回答对静态网址有好处,但对于动态网址,您可以使用以下内容。
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
再举一个例子
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
答案 3 :(得分:2)
您可以这样定义直接重定向路由规则:
Route::redirect('foo', '/bar', 301);
答案 4 :(得分:1)
Laravel 301和302使用redirect()和route()进行重定向
301(永久):
return redirect(route('events.show', $slug), 301);
302(临时):
默认情况下,Route :: redirect返回302状态代码。
return redirect()->route('events.show', $slug);
Laravel官方文档,“重定向路线”:https://laravel.com/docs/5.8/routing#redirect-routes
答案 5 :(得分:0)
从Laravel 5.8开始,您可以指定Route::redirect
:
Route::redirect('/here', '/there');
默认情况下,将使用302 HTTP状态代码进行重定向,这表示临时重定向。如果页面被永久移动,则可以指定301 HTTP状态代码:
Route::permanentRedirect('/here', '/there');
/* OR */
Route::redirect('/here', '/there', 301);
Laravel文档:https://laravel.com/docs/5.8/routing#redirect-routes