AngularJs和Laravel中的漂亮网址不起作用

时间:2015-04-07 05:50:21

标签: javascript php angularjs laravel-5

我正在使用Laravel和AngularJS开发应用程序。对于AngularJS漂亮的URL,我设置了$ locationProvider.html5Mode(true),它运行正常。但是假设我的网址是http://localhost:8000/demo,如果我刷新页面,我会在compiled.php第7693行中获得NotFoundHttpException:

这是我的角度路线。

function($routeProvider,$locationProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider.
    when('/', {
        templateUrl: 'partials/index.html',
        controller: 'indexController'
    }).
    when('/dom',{
        templateUrl:'partials/dom.html',
        controller:'DomController'
    }).
    when('/demo',{
        templateUrl:'partials/demo.html',
        controller:'DemoController'
    });
}]);

这是我的laravel的路线。

Route::get('/', function(){
    return view('index');
});

我很感激一点帮助。 谢谢!

1 个答案:

答案 0 :(得分:5)

这里的问题是,当您刷新页面时,Web服务器将选择http://localhost:8000/demo,并尝试处理该请求。它不知道您希望使用html5路由。所以它会解析请求,说"哦,我应该将它传递给public/index.php并完成它"。然后public/index.php将接收它并抛出错误,因为Laravel中不存在该路线。

你需要做的是在Laravel中捕获所有类型的路由,然后让Angular的路由接管。然后,您可以在每个请求上呈现索引视图。关于你如何在Laravel 5中做到这一点,这里有一个很好的答案:How do I catch exceptions / missing pages in Laravel 5?

这是伪代码,无法正常工作,只是为了展示一个例子:

Route::get('*', function() {
    return view('index');
});

因此,在每个请求上呈现索引视图,然后让Angular从那里处理路由。