2013-10-10 29 views
2

我想使用$ locationProvider.html5Mode(true)刪除angularJs中的#哈希值;但是這導致所有的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:是的,其他網址應該通過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

以及您從哪裏爲前端服務?從/公共目錄? – 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); 
    } 
]); 

希望它會幫助別人。