Laravel, как перенаправить 301 и 302
Я не могу найти информацию для перенаправления как 301/302 в Laravel docs.
В моем файле routes.php я использую:
Route::get('foo', function(){
return Redirect::to('/bar');
});
По умолчанию это 301 или 302? Есть ли способ установить его вручную? Любая идея, почему это было бы опущено из документов?
Ответы
Ответ 1
Всякий раз, когда вы не уверены, вы можете ознакомиться с документацией API Laravel с исходным кодом. Класс Redirector определяет значение $status = 302
как значение по умолчанию.
Код состояния можно определить с помощью метода to()
:
Route::get('foo', function(){
return Redirect::to('/bar', 301);
});
Ответ 2
Я обновляю ответ для Laravel 5!
Теперь вы можете найти в документах помощник перенаправления:
return redirect('/home');
return redirect()->route('route.name');
Как обычно... всякий раз, когда вы не уверены, вы можете ознакомиться с Laravel документацией по API с исходным кодом. Класс Redirector определяет значение $status = 302 как значение по умолчанию (302 - временная переадресация).
Если вы хотите иметь постоянное перенаправление URL-адресов (код статуса HTTP-ответа 301 перемещен на постоянной основе), вы можете определить код состояния с помощью функция перенаправления():
Route::get('foo', function(){
return redirect('/bar', 301);
});
Ответ 3
martinstoeckli ответ хорош для статических URL-адресов, но для динамических 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
Ответ 4
Вы можете определить правило прямого перенаправления маршрута следующим образом:
Route::redirect('foo', '/bar', 301);
Ответ 5
Начиная с 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