gpt4 book ai didi

javascript - Angularjs 路由和 html5

转载 作者:行者123 更新时间:2023-11-28 01:54:13 25 4
gpt4 key购买 nike

我的应用程序有一些路线:

$routeProvider.
when('/user', {templateUrl: 'user/partials/userlist.html', controller: 'userListController'}).
when('/user/:userName', {templateUrl: 'user/partials/userdetail.html', controller: 'userDetailController'}).
when('/group',{templateUrl: 'group/partials/grouplist.html', controller: 'groupListController'}).
when('/group/:groupName', {templateUrl: 'group/partials/groupdetail.html', controller: 'groupDetailController'}).
when('/category',{templateUrl: 'category/partials/categorylist.html', controller: 'categoryListController'}).
otherwise({redirectTo: '/user'});

应用程序的根目录是/admin/,我将.htaccess设置为默认为index.html,因此网站看起来像:www.domain.com/admin/#/user/username ...等等...在非 HTML5 版本中。

这样的话一切都会正常进行。当我打开 HTML 5 时,它会立即重定向到:www.domain.com/user/,当然,它不起作用。我如何告诉我的路由提供商我的模块的根目录是/admin/?

编辑:

我添加:<base href="/admin/"></base>到我的 index.html 头标签的最后一行,现在当我转到 www.domain.com/admin 时,它会正确重定向到 www.domain.com/admin/user 并使用用户列表模板和 Controller 。但是,当我直接导航到 www.domain.com/admin/user 时,它给我一个页面未找到错误。我开始怀疑这部分是否与我的默认重写规则有关:

RewriteRule ^$ index.html

编辑:

是的。弄清楚了。完全取出重写,它可以从默认重定向到用户,然后转到用户详细信息,它可以工作,但是输入/user 或任何其他路由不起作用......看起来它只适用于 html5 是当我从应用程序本身进行导航,我无法直接导航到不同的 View 。例如,当我尝试直接加入群组时,它不起作用。

因此,没有重写规则来重写索引,用户默认路由有效,组和类别无效。

编辑:

这是我发现的。由于没有重写默认的 index.html,即 $location.html5mode(true) 设置,只要您导航到在 www.domain.com/#/user/或 www.domain.com 中键入的页面,它就可以工作。/#/团体。它立即将 URL 重写为 www.domain.com/user 或 www.domain.com/group。但如果您尝试直接导航到 www.domain.com/user ,则无法正常工作。显然,重写规则在这里没有帮助,因为是前端在处理路由。

这是 Angular 路由的标准行为吗?

编辑以添加到解决方案:

如果您有任何重定向到子目录的其他路由,请务必使用 [END] 标记或确保目录已关闭 mod-rewrite,否则它将在重写后再次处理通用规则,一切都会正常重定向到索引。

最佳答案

据我所知,问题是当人们访问根 URL 时,你只提供 AngularJS HTML 和 JS。服务器看不到哈希值,它只看到 www.domain.com/。然而,听起来您希望 Angular 做所有事情,因此您应该考虑像这样的通配符路线。

RewriteRule ^.*$ index.html

这将确保无论 www.domain.com/ 之后是什么锥体,您都会将 index.html 返回到浏览器,该浏览器将加载 AngularJS 和您的路由,以便AngularJS 可以完成剩下的工作。

除非我误解了这里发生的事情,否则我很确定这是你的问题。

关于javascript - Angularjs 路由和 html5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19362028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com