我在Laravel 文档中找不到重定向为 301/302 的信息。
在我的 routes.php 文件中,我使用:
Route::get('foo', function(){
return Redirect::to('/bar');
});
这是默认的 301 还是 302?有没有办法手动设置?知道为什么这会从文档中省略吗?
我在Laravel 文档中找不到重定向为 301/302 的信息。
在我的 routes.php 文件中,我使用:
Route::get('foo', function(){
return Redirect::to('/bar');
});
这是默认的 301 还是 302?有没有办法手动设置?知道为什么这会从文档中省略吗?
每当您不确定时,您可以查看 Laravel 的 API 文档和源代码。Redirector 类将a 定义$status = 302
为默认值。
您可以使用以下方法定义状态代码to()
:
Route::get('foo', function(){
return Redirect::to('/bar', 301);
});
我更新了 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);
});
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
您可以像这样定义直接重定向路由规则:
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 文档:https ://laravel.com/docs/5.8/routing#redirect-routes
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