我在 Laravel 文档中找不到重定向为 301/302 的信息。
在我的routes.php 文件中我使用:
Route::get('foo', function(){
return Redirect::to('/bar');
});
默认是 301 还是 302?有没有办法手动设置?知道为什么这会从文档中省略吗?
当你不确定的时候,你可以查看 Laravel 的 API 文档和源代码。 Redirector 类 定义
$status = 302
作为默认值。
您可以使用
to()
方法定义状态代码:
Route::get('foo', function(){
return Redirect::to('/bar', 301);
});
我更新了 Laravel 5 的答案! 现在您可以在文档中找到重定向助手:
return redirect('/home');
return redirect()->route('route.name');
像往常一样..每当你不确定时,你可以查看 Laravel 的 API 文档 以及源代码。 Redirector 类 定义 $status = 302 作为默认值(302 是临时重定向)。
如果您希望有永久 URL 重定向(HTTP 响应状态代码 301 永久移动),您可以使用 redirect() 函数定义状态代码:
Route::get('foo', function(){
return redirect('/bar', 301);
});
martinstoeckli 的答案适用于静态 url,但对于动态 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
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
您可以像这样定义直接重定向路由规则:
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 Forge 处理别名域。我尝试了
redirect('http://aliasdomain.com', 301)
并收到服务器错误。我必须使用 redirect()->to('http://aliasdomain.com', 301)->send()
才能让它发挥作用。