AngularJs和Laravel的Pretty Urls不起作用


Pretty Urls in AngularJs and Laravel not working

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

这是我的angular路线。

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'
    });
}]);

这是我的拉拉威尔路线。

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

我很感激你的帮助。谢谢

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

你需要做的是在Laravel中创建一个包罗万象的路由,然后让Angular的路由接管。然后,您将在每个请求上呈现索引视图。关于如何在Laravel 5中做到这一点,SO上有一个很好的答案:我如何在Laravil 5中捕捉异常/缺失页面?

这是伪代码,将不起作用,只是为了显示一个示例:

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

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