43

我在Laravel 文档中找不到重定向为 301/302 的信息。

在我的 routes.php 文件中,我使用:

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

这是默认的 301 还是 302?有没有办法手动设置?知道为什么这会从文档中省略吗?

4

6 回答 6

87

每当您不确定时,您可以查看 Laravel 的 API 文档和源代码。Redirector 类将a 定义$status = 302为默认值。

您可以使用以下方法定义状态代码to()

Route::get('foo', function(){ 
    return Redirect::to('/bar', 301); 
});
于 2013-11-13T21:41:45.103 回答
17

我更新了 Laravel 5 的答案!现在您可以在 docs redirect helper上找到:

return redirect('/home');

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

像往常一样.. 当你不确定时,你可以看看 Laravel 的API 文档和源代码。Redirector 类将$status = 302 定义为默认值(302 是临时重定向)。

如果您希望有一个永久的 URL 重定向(HTTP 响应状态码 301 Moved Permanently),您可以使用redirect() 函数定义状态码:

Route::get('foo', function(){ 
    return redirect('/bar', 301); 
});
于 2017-06-05T17:19:21.797 回答
8

martinstoeckli 的答案适用于静态网址,但对于动态网址,您可以使用以下内容。

对于动态 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

再举一个例子

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

于 2017-08-25T05:13:30.383 回答
5

您可以像这样定义直接重定向路由规则:

Route::redirect('foo', '/bar', 301);
于 2018-08-13T12:33:43.057 回答
3

从 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

于 2019-07-08T09:48:06.633 回答
3

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

于 2020-03-16T17:41:58.297 回答