AngularJs 和 Laravel 中的漂亮网址无效

Pretty Urls in AngularJs and Laravel not working

我正在使用 Laravel 和 AngularJS 开发应用程序。对于 AngularJS pretty URL ,我设置了 $locationProvider.html5Mode(true) 并且它工作正常。但是假设我的 url 是 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'
    });
}]);

这是我 laravel 的路线。

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

如果能提供一点帮助,我将不胜感激。 谢谢!

这里的问题是,当您刷新页面时,Web 服务器将获取 http://localhost:8000/demo,并尝试处理该请求。它不知道您希望使用 html5 路由。所以它将解析请求,比如 "oh, I should pass this to public/index.php and be done with it"。然后 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 从那里处理路由。