【问题标题】:Pretty Urls in AngularJs and Laravel not workingAngularJs 和 Laravel 中的漂亮网址不起作用
【发布时间】:2015-06-11 15:23:19
【问题描述】:

我正在使用 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'
    });
}]);

这是我的 laravel 的路线。

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

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

【问题讨论】:

    标签: javascript php angularjs laravel-5


    【解决方案1】:

    这里的问题是,当你刷新页面时,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 从那里处理路由。

    【讨论】:

    • 谢谢,试试看!
    • 当我按照建议的帖子尝试在 handler.php 中捕获丢失的路由时,我收到此错误 SyntaxError: expected expression, got '
    • 对不起,我只是指另一个问题,但我从未这样做过。您可能可以问回答它的人。
    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2017-04-06
    • 2015-06-01
    • 2014-04-22
    • 2016-02-14
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多