2015-06-07 3 views
2

Я создаю приложение RESTful с Laravel 4 как backend и AngularJS как интерфейс. Я хочу использовать маршрутизацию из Angular.Проблема маршрутизации с Laravel 4 и AngularJS в html5Mode

routes.php в Laravel настроены так (с одной группой/API, но не обязательно)

Route::any('{all}', function ($uri) { 
    return View::make('index'); 
})->where('all', '.*'); 

Мои маршруты в угловому являются

$routeProvider. 
    when('/', { 
     templateUrl: 'views/test.html', 
     controller: 'homeCtrl' 
    }). 
    when('/test', { 
     templateUrl: 'views/test.html', 
     controller: 'homeCtrl' 
    }). 
    when('/test/:id', { 
     templateUrl: 'views/test.html', 
     controller: 'homeCtrl' 
    }). 
    otherwise({ 
     redirectTo: '/' 
    }); 
$locationProvider.html5Mode(true); 

Я определил <base href="/"/> в index.php

И мой DocumentRoot в xampp находится в DocumentRoot "C:/xampp/htdocs/laravel/public" (так что общая папка в Laravel)

Когда я ударил localhost/test все работает нормально. Но когда я пытаюсь получить доступ к localhost/test/1, все загружается как файл index.php из изображений Laravel, как вы можете видеть ниже.

enter image description here

ли кто-нибудь решить эту проблему? Должен ли я создать регулярное выражение в routes.php, которое будет содержать все расширения (.js, .jpg, ...) (я думаю, что это не очень хорошая идея)? Или мне нужно изменить файл .htaccess?

+0

https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode. Laravel специально не указан, но вы должны иметь представление о том, как настроить его на основе других примеров. – Claies

+0

@Claies, это не проблема в '$ locationProvider.html5Mode (true);' (я прокомментировал это с тем же результатом), я думаю. –

+0

также, возможный дубликат http://stackoverflow.com/questions/21357258/angularjs-and-laravel-4-routing-conflict-in-html5-mode?rq=1 – Claies

ответ

0

Я нашел решение в этом question и изменил отсутствующие маршруты, которые ловят в Laravel, и все в порядке.

App::missing(function ($exception) { 
    return Redirect::to('/#/' . Request::path()); 
}); 

Проблемы были

  • Угловое в html5Mode нужно # в качестве префикса.
  • Laravel возвращался на главную страницу в подпрограммах, включая активы, как я показал в вопросе.
Смежные вопросы