AngularJS y Laravel 4 enrutamiento conflicto en modo HTML5
Me gustaría eliminar el # hash de las URL usando Angularjs '$locationProvider.html5Mode(true)
.
Ejemplo: la barra de direcciones muestrahttp://localhost/shop
en lugar dehttp://localhost/#/shop
.
Todo funciona bien hasta que actualizo una página. Si actualizo, se accede a la siguiente Ruta de Laravel (definida en route.php)
Route::resource('shop', 'ShoppingController')
no la ruta AngularJS (definida en app.js)
$routeProvider.when('/shop', {
templateUrl: 'templates/shop.html',
controller: 'ShoppingController'
});
Mi código:
route.php (Rutas Laravel)
Route::get('/', function() {
return View::make('index');
});
Route::resource('shop', 'ShoppingController');
app.js (Rutas AngularJS)
var app = angular.module('shoppingApp',['ngRoute','SharedServices']);
app.config(function($routeProvider, $locationProvider) {
$routeProvider.when('/shop', {
templateUrl: 'templates/shop.html',
controller: 'ShoppingController'
});
$routeProvider.otherwise({ redirectTo: '/' });
$locationProvider.html5Mode(true);
});
Mi estructura de directorio:
Project
/app
/...
/views
-index.php (single page application file)
-routes.php (Laravel routes)
/public
/...
/js
-angular.js
-app.js
-index.php (Laravel index file)
Soluciones intentadas:
Vuelva a escribir el archivo htaccess para que todas las solicitudes se redirijan a index.php (el archivo de aplicación de una sola página, desde donde AngularJS se haría cargo del enrutamiento). Problema: De esta manera, la ruta Laravel (Route :: resource ('shop', 'ShoppingController'); - necesaria para la interacción con la base de datos) se vuelve inaccesible para el servicio http de AngularJS $
app.js
app.controller("ShoppingController", function($scope, $http) {
$http.get('/shop', { cache: true}).
success(function(data, status) {
$scope.items = data
}).
error(function(data, status) {
console.log('Status: ' + status);
});
});
Pregunta: ¿Cómo puedo resolver el problema de enrutamiento, de modo que se pueda acceder a la ruta AngularJS, no a la ruta Laravel si actualizo localhost / shop?