2013-10-10 4 views
2

Я хочу удалить # hash в angularJs, используя $ locationProvider.html5Mode (true); но это заставляет все URL-адреса маршрутизироваться через angularJs. Как я могу настроить его, поэтому только некоторые предопределенные URL-адреса были перенаправлены через angularJs, а остальные все еще используют Laravel.AngularJs + Laravel Routing

Код:

app.config(['$routeProvider', '$locationProvider', 
     function($routeProvider, $locationProvider) { 
      $routeProvider 
      .when('/alls', { 
       templateUrl: app.site_url + 'ang/index', 
       controller: 'MainCtrl' 
      }) 
      .when('/alls/page/:page', { 
       templateUrl: app.site_url + 'ang/index', 
       controller: 'MainCtrl' 
      }) 
      .otherwise({ 
       redirectTo: '/alls' 
      }); 
      $locationProvider.html5Mode(true); 
     } 
    ]); 

Так что, если это не/Аллс или/Аллс/страница /, Laravel должен обрабатывать маршрутизацию.

+0

Вы используете перезапись на стороне сервера? – DaGardner

+0

@Christian: Да, другие URL-адреса должны проходить через index.php. Я использую htaccess для повторной записи: 'RewriteCond% {REQUEST_FILENAME} -s [OR] RewriteCond% {REQUEST_FILENAME} -l [OR] RewriteCond% {REQUEST_FILENAME} -d RewriteRule ^. * $ - [NC, L] RewriteRule ^. * $ Index.php?/$ 1 [NC, L] ' –

+0

и откуда вы обслуживаете интерфейс? Из каталога/public? – DaGardner

ответ

3

Я пробовал использовать <base href=".">, как описано в: http://docs.angularjs.org/guide/dev_guide.services. $ Location. Но это не сработает. Я, наконец, получил его на работу. Вот решение:

app.config(['$routeProvider', '$locationProvider', 
    function($routeProvider, $locationProvider) { 
     $routeProvider 
     .when('/alls', { 
      templateUrl: app.site_url + 'ang/index', 
      controller: 'MainCtrl' 
     }) 
     .when('/alls/page/:page', { 
      templateUrl: app.site_url + 'ang/index', 
      controller: 'MainCtrl' 
     }) 
     .otherwise({ 
      templateUrl: app.site_url + 'ang/index', 
      controller: function(){ 
       window.location.href = window.location.href; 
      }    
     });   
     $locationProvider.html5Mode(true); 
    } 
]); 

Надеюсь, это поможет кому-то еще.