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

kis*_*han 0 javascript php angularjs laravel-5

我正在使用Laravel和AngularJS开发一个应用程序.对于AngularJS漂亮的URL,我设置了$ locationProvider.html5Mode(true),它运行正常.但是假设我的URL是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'
    });
}]);
Run Code Online (Sandbox Code Playgroud)

这是我的laravel的路线.

Route::get('/', function(){
    return view('index');
});
Run Code Online (Sandbox Code Playgroud)

我会感激一点帮助.谢谢!

Nik*_*ess 5

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

你需要做的是在Laravel中捕获所有类型的路径,然后让Angular的路由接管.然后,您可以在每个请求上呈现索引视图.关于你如何在Laravel 5中做到这一点,这里有一个很好的答案:如何在Laravel 5中捕获异常/缺失页面?

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

Route::get('*', function() {
    return view('index');
});
Run Code Online (Sandbox Code Playgroud)

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