Подтвердить что ты не робот

Laravel, как перенаправить 301 и 302

Я не могу найти информацию для перенаправления как 301/302 в Laravel docs.

В моем файле routes.php я использую:

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

По умолчанию это 301 или 302? Есть ли способ установить его вручную? Любая идея, почему это было бы опущено из документов?

4b9b3361

Ответ 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