2016-07-08 1 views
2

나는 Laravel5이 "일반"경로를 가지고 있으며 (모든 얻을 요청 AngularJS와를 포함 년대 HTML이 포함되어 집으로 리디렉션) AngularJS와 대한의 :Laravel 경로는 때때로 발사 또 다른 하나

Route::get('{path?}', function() { 

    return view('home'); 

})->where('path', '.+'); 

를 그리고이 전에있다 API (ajax) 중 하나 :

그래서 먼저 "API"가 있고 "angular"뒤에 있습니다. 문제는 종종 페이지를 호출 할 때입니다. api/SOMETHING은 실제 하나 (리소스 중 하나 인 JSON) 대신 html 응답으로 두 번째 경로 (AngularJS)를 실행하므로이 작은 "해킹 ":

이제 문제는 95 %에서 해결되지만 종종 첫 번째로드에서만 다시 발생합니다.

아이디어가 있으십니까? 미들웨어/이전?

+0

라우트에 대해주의해야 할 점은'domain/admin/{path?} '을 (를) 갖고 있으므로'domain/admin/login'을 가지고 있으므로 도메인/admin/login으로 이동해야합니다. 브라우저에서 첫 번째 경로는 항상이를 잡아서 필요한 경로에 도달하지 않습니다. 그래서'php artisan route : list'를 실행하여 라우트를 확인하고 결과가 어떤 영향을 주는지 확인하십시오. –

+0

문제는/api/JSON을 제외하고 나는 95 %의 시간에 작동한다는 것입니다. 다른 5 % 경로 {path?}가 호출됩니다. 기묘한. – Grork

+0

당신은 그것을 가지고 있기를 원하는대로 전체 루트 파일을 게시 할 수 있습니다 :/또한리스트에서, php artisan 라우트를 실행할 수도 있습니다 : jus는 이렇게 분할되지 않고 하나의 전체 라우트 파일로 읽기 쉽습니다. –

답변

0

문제를 올바르게 이해하고있는 경우 Laravel이 경로 그룹에 들어가면 해당 경로 그룹에 "고정"되어 있다고 가정하는 것처럼 들립니다. 그러나 그룹 내에서 일치하는 경로가없는 경우 Laravel은 등록 된 경로 목록에서 catchall {path?} 경로까지 계속 진행합니다.

아마도 api 경로 그룹에서 catchall 경로를 만드시겠습니까?

Route::group(['prefix' => 'api'], function() { 

    // API routes go here here 

    Route::get('{path}', function() { 
     // I believe this is the right way to make a JSON response in Laravel 5 
     return response()->json(['error' => 'endpoint not found']); 
    })->where('path', '.*'); 

});