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 从那里处理路由。
我正在使用 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 从那里处理路由。