如何删除angular-ui-router URL中的“#”号

我正在使用angular-ui-router库,并且对URL有问题。

我有以下代码:

app.js:

app.config(function ($stateProvider, $urlRouterProvider) { $stateProvider .state('state', { url: '/state', templateUrl: 'templates/state.html', onEnter: function () { /*... code ...*/ } })}); 

index.html的:

 <a href="#/state">STATE</a> 

这工作,但是当我从<a>标记删除'#'这不起作用。

如何从URL中删除“#”号?

如果您需要不带散列标签的导航,则需要启用HTML5Mode:

 app.config(["$locationProvider", function($locationProvider) { $locationProvider.html5Mode(true); }]); 

您还需要通过将以下代码添加到您的HTML文件的<head>中来告诉您的应用程序的根URL:

 <base href="/"> 

请注意,对HTML5模式的支持取决于浏览器。 对于那些不支持History API的人来说, Angular会回退hashbang 。

如果您使用的是Angular 1.6+ ,则还需要从URL中删除hashPrefix

 appModule.config(['$locationProvider', function($locationProvider) { $locationProvider.hashPrefix(''); // by default '!' $locationProvider.html5Mode(true); }]); 

不要忘记改变基地:

 <head> ... <base href="/"> </head> 
  yourApp.config(function ($stateProvider, $urlRouterProvider,$locationProvider) { $urlRouterProvider.otherwise('/home'); //add this line in your routing code $locationProvider.html5Mode(true); $stateProvider.state('web.home', { url: '/home', templateUrl: 'pages/home.html', controller: 'mainController' }) } 

在你的index.php或index.html的<head>标签插入

 < base href="/" > 

对于CodeIgniter

 <base href=" < ?php echo base_url() ? >" >