首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为非根基urls设置AngularJS $locationProvider HTML5模式?

如何为非根基urls设置AngularJS $locationProvider HTML5模式?
EN

Stack Overflow用户
提问于 2015-07-15 08:09:37
回答 1查看 9.2K关注 0票数 6

我有一个可以工作的AngularJS (1.3.8)应用程序,它作为一个web应用部署在Tomcat中的应用程序上下文“app”下。

URL看起来如下:

代码语言:javascript
运行
复制
https://www.myserver.com/app/#/login 

https://www.myserver.com/app/#/register

等等,路线的定义如下:

代码语言:javascript
运行
复制
$routeProvider.when(
    'login',
    {templateUrl: 'partials/login.html?' + now, controller: 'LoginController'}
);

$routeProvider.when(
    'register',
    {templateUrl: 'partials/register.html?' + now, controller: 'RegistrationController'}
);

$routeProvider.otherwise(
    {redirectTo: 'login'}
);

一切都很好。现在我需要做的是从URL中删除散列,并使用HTML5模式的$location。到目前为止,我无法让这件事起作用。

我的假设是我只需要打电话

代码语言:javascript
运行
复制
$locationProvider.html5Mode({
    enabled: true,
    requireBase: false
});

现在,应用程序URL更改为

代码语言:javascript
运行
复制
https://www.myserver.com/app/login 

https://www.myserver.com/app/register

这不管用。当我请求URL时

代码语言:javascript
运行
复制
https://www.myserver.com/app

角重定向

代码语言:javascript
运行
复制
https://www.myserver.com/login

总的来说,整个路由和资源加载都会随着这一变化而中断。例如,无法解析路由定义中的部分URL。只有当我添加'/app/‘前缀时,它们才能工作。

我尝试使用基标记,将$locationProvider调用更改为

代码语言:javascript
运行
复制
$locationProvider.html5Mode({
    enabled: true
});

并使用

代码语言:javascript
运行
复制
<base href="/app">

令人惊讶的是,这没有任何效果。不过,输入https://www.myserver.com/app会导致AngularJS重定向到https://www.myserver.com/login。URL https://www.myserver.com/app/login不可用。

下面是我使用基本标记的方式:

代码语言:javascript
运行
复制
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
    <link href="css/mycss" rel="stylesheet" type="text/css">
    ...
    <script src="js/my.js"></script>
    <base href="/app">
</head>
<body class="ng-cloak">
    <ng-view></ng-view>
</body>
</html>

我还遇到了其他问题。例如,如果我在HTML文件中更改基标记的位置,如下所示:

代码语言:javascript
运行
复制
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
    <base href="/app">
    <link href="css/mycss" rel="stylesheet" type="text/css">
    ...
    <script src="js/my.js"></script>
</head>
<body class="ng-cloak">
    <ng-view></ng-view>
</body>
</html>

然后在加载期间突然无法解析JS和CSS文件。

有人能解释我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-15 10:03:01

我相信你一定在基地href里面跟踪了href

代码语言:javascript
运行
复制
<base href="/app/">
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31424897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档