我有一个可以工作的AngularJS (1.3.8)应用程序,它作为一个web应用部署在Tomcat中的应用程序上下文“app”下。
URL看起来如下:
https://www.myserver.com/app/#/login 
https://www.myserver.com/app/#/register等等,路线的定义如下:
$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。到目前为止,我无法让这件事起作用。
我的假设是我只需要打电话
$locationProvider.html5Mode({
    enabled: true,
    requireBase: false
});现在,应用程序URL更改为
https://www.myserver.com/app/login 
https://www.myserver.com/app/register这不管用。当我请求URL时
https://www.myserver.com/app角重定向
https://www.myserver.com/login总的来说,整个路由和资源加载都会随着这一变化而中断。例如,无法解析路由定义中的部分URL。只有当我添加'/app/‘前缀时,它们才能工作。
我尝试使用基标记,将$locationProvider调用更改为
$locationProvider.html5Mode({
    enabled: true
});并使用
<base href="/app">令人惊讶的是,这没有任何效果。不过,输入https://www.myserver.com/app会导致AngularJS重定向到https://www.myserver.com/login。URL https://www.myserver.com/app/login不可用。
下面是我使用基本标记的方式:
<!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文件中更改基标记的位置,如下所示:
<!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文件。
有人能解释我做错了什么吗?
发布于 2015-07-15 10:03:01
我相信你一定在基地href里面跟踪了href
<base href="/app/">https://stackoverflow.com/questions/31424897
复制相似问题