如何删除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() ? >" >