AngularJS 子目录路由不起作用,应用了 base 标签

作者:编程家 分类: angularjs 时间:2025-11-03

使用AngularJS开发Web应用时,我们经常会遇到需要在子目录下进行路由的情况。然而,有时候我们会发现子目录的路由并没有起作用。这个问题的一个常见原因是我们在应用中使用了标签。

标签是HTML中的一个元素,用于指定页面中所有相对URL的基准地址。它的作用是告诉浏览器,所有的相对URL都是相对于指定的基准地址来解析的。在AngularJS应用中,如果我们使用了标签,并且指定了一个子目录作为基准地址,那么子目录下的路由就会出现问题。

为了解决这个问题,我们需要对应用的路由进行一些调整。首先,我们可以在路由配置中添加一个``的配置项,将基准地址设置为根目录。这样,子目录下的路由就会正常工作了。

让我们来看一个具体的例子。假设我们有一个AngularJS应用,结构如下:

- app

- index.html

- js

- app.js

- controllers

- homeController.js

- aboutController.js

在`index.html`中,我们添加了标签,并指定基准地址为`/app/`:

html

My AngularJS App

在`app.js`中,我们配置了路由:

javascript

var app = angular.module('myApp', ['ngRoute']);

app.config(function($routeProvider) {

$routeProvider

.when('/home', {

templateUrl: 'views/home.html',

controller: 'homeController'

})

.when('/about', {

templateUrl: 'views/about.html',

controller: 'aboutController'

})

.otherwise({

redirectTo: '/home'

});

});

app.controller('homeController', function($scope) {

$scope.message = 'Welcome to the Home page!';

});

app.controller('aboutController', function($scope) {

$scope.message = 'Welcome to the About page!';

});

在`views/home.html`和`views/about.html`中,我们分别添加了一个`

`标签来显示欢迎消息:

html

Home

{{ message }}

html

About

{{ message }}

现在,当我们在浏览器中访问`/app/home`或`/app/about`时,就能正常显示对应页面的内容了。通过在路由配置中添加``,我们解决了子目录路由不起作用的问题。

在使用AngularJS开发Web应用时,当子目录路由不起作用时,可能是因为应用中使用了标签导致的。为了解决这个问题,我们可以在路由配置中添加``,将基准地址设置为根目录。这样,子目录下的路由就能正常工作了。