加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS:如何启用$locationProvider.html5Mode与深层链接

发布时间:2020-12-17 09:04:37 所属栏目:安全 来源:网络整理
导读:当通过$ locationProvider.html5Mode(true)在AngularJS中启用html5Mode时,导航似乎是倾斜的,当你登陆页面更深的网站。 例如: http://www.site.com 当我导航到根,我可以单击网站中的所有链接,Angular的$ routeProvider将接管导航通过网站和加载正确的视
当通过$ locationProvider.html5Mode(true)在AngularJS中启用html5Mode时,导航似乎是倾斜的,当你登陆页面更深的网站。

例如:

> http://www.site.com
当我导航到根,我可以单击网站中的所有链接,Angular的$ routeProvider将接管导航通过网站和加载正确的视图。
> http://www.site.com/news/archive
但当我导航到这个网址(或当我在一个深层链接像上面的一个打击刷新…)这个导航不工作,我期望它。
首先,我们作为Documentation for $locationProvider.html5Mode指定,我们捕获服务器上的所有url,类似于否则路由在角,并返回相同的html作为根域。但是如果我然后检查$ location对象从运行函数的角度,它告诉我,http://www.site.com是我的主机,和/ archive是我的路径。 $ routeProvider到达.otherwise()子句,因为我只有/ news / archive作为有效的路由。和应用程序做奇怪的东西。

也许在服务器上的重写需要做不同的,或者我需要指定东西在角度,但目前我无能为力角看到的路径没有/新闻段包括。

示例main.js:

// Create an application module
var App = angular.module('App',[]);

App.config(['$routeProvider','$locationProvider',function AppConfig($routeProvider,$locationProvider) {

    $routeProvider
        .when(
        '/',{
            redirectTo: '/home'
        })
        .when('/home',{
            templateUrl: 'templates/home.html'
        })
        .when('/login',{
            templateUrl: 'templates/login.html'
        })
        .when('/news',{
            templateUrl: 'templates/news.html'
        })
        .when('/news/archive',{
            templateUrl: 'templates/newsarchive.html'
        })
        // removed other routes ... *snip
        .otherwise({
            redirectTo: '/home'
        }
    );

    // enable html5Mode for pushstate ('#'-less URLs)
    $locationProvider.html5Mode(true);
    $locationProvider.hashPrefix('!');

}]);

// Initialize the application
App.run(['$location',function AppRun($location) {
    debugger; // -->> here i debug the $location object to see what angular see's as URL
}]);

编辑
根据请求,在服务器端的更多细节:
服务器端由zend框架的路由组织,并且它处理它自己的路由(用于在特定/ api urls上向前端提供数据),并且在末端,如果没有特定的其他路由被绑定,则存在全捕获路由,它提供与根路由相同的html。
所以它基本上服务于那个深层链接路线上的首页html。

更新2
在查看问题后,我们注意到这个路由工作正常,在Angular 1.0.7稳定,但显示上述行为在Angular 1.1.5不稳定。

我检查了更改日志,但还没有发现任何有用的东西到目前为止,我想我们可以提交它作为一个错误,或不必要的行为链接到他们做了一定的更改,或只是等待,看看它是否固定后来被发布稳定版本。

发现有没有bug。
只需添加:
<base href="/" />

到您的< head /&gt ;.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读