LARAVLE 3의 경로와 동등한 것입니다 :: LARAVLE 4의 공유 4 개가 있습니까?

StackOverflow https://stackoverflow.com//questions/21002101

  •  20-12-2019
  •  | 
  •  

문제

나는 최근에 Laravel 3에서 Laravel 4에서 응용 프로그램을 마이그레이션하고 Laravel 3에서는 Laravel 4에서 해당 할 수 없었던 Laravel 3에서 사용 된 무언가를 가로 질렀다.

Laravel 3에는 Route::share가 있었고 내 응용 프로그램에는 기본적으로 시리즈 레거시 URL을 새 URL로 리디렉션하는 공유 경로가있었습니다.분명히 이것은 mod_rewrite 규칙을 사용하여 수행 할 수 있지만 공유 할 수있는 경로에서 발생하는 간단한 리디렉션 외에도 다른 동작이있을 수 있습니다.

Route::share( array(
    array('GET', 'Songbook/songbook.html'),
    array('GET', 'Songbook'),
    array('GET', 'songbook/songbook.html'),
    array('GET', 'songbook'),
    array('GET', 'tgbs'),
), function () {
    return Redirect::to( 'lyrics', 301 );
} );
.

LARAVLE 4에서 이에 해당하는 것이 있습니까?내가 할 수있는 유일한 것은 각각의 신중한 경로를 만드는 것이 었습니다.더 우아한 방법이 있어야하는 것처럼 보입니다.

Route::get('Songbook/songbook.html', function(){ return Redirect::route('lyrics'); });
Route::get('Songbook',               function(){ return Redirect::route('lyrics'); });
Route::get('songbook/songbook.html', function(){ return Redirect::route('lyrics'); });
Route::get('songbook',               function(){ return Redirect::route('lyrics'); });
Route::get('tgbs',                   function(){ return Redirect::route('lyrics'); });
.

도움이 되었습니까?

해결책

나는 그 일을 발견했기 때문에 이것을 내 질문에 대한 답변으로 게시 할 것입니다.이렇게하면 URL 매개 변수와 regex가있는 where() 메소드가 목록의 URL과 일치하는지 확인합니다.그러나 나는 이것이 여전히 이것이 당신이 정규 표현을 정말로 좋아하지 않고 우아한 것을 발견하지 않는 한, 당신이 정말로 그들을 찾지 않는 한,

나는 여전히 더 우아한 해결책이 있다고 느낍니다.

Route::any('{any?}', function(){ return Redirect::route('lyrics'); })
    ->where('any', '(Songbook\/songbook\.html|Songbook|songbook\/songbook\.html|songbook|tgbs)');
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top