去掉 #!来自我的网址

时间:2017-04-15 02:01:38

标签: angularjs angular-ui-router

我正在使用角度进行路由的ui-router。我的主网址后面有一些奇怪的#!

http://localhost/bootstrap/newBlogProject/index.html#!/home

在index.html之后的上述网址中,我必须删除此#!符号。

2 个答案:

答案 0 :(得分:0)

尝试设置$ locationProvider.hashPrefix(''); 这是我在路由配置中设置hashPrefix的示例。

function config($httpProvider, $routeProvider, $locationProvider) {
  $routeProvider
  .when('/', {
    templateUrl: 'views/home.html',
    controller: 'HomeController',
    controllerAs: 'vm',
    access: {
      restricted: false
    }
  });
  $locationProvider.hashPrefix('');
}

答案 1 :(得分:0)

您必须启用$ locationProvider的html5Mode以避免使用hashBang(#!)。

function config($locationProvider) {
  $locationProvider.html5Mode(true);
}

它会强制ui-router使用history api来操作URL并避免使用hashBang。 与解释here一样。

  

如果是boolean,则将html5Mode.enabled设置为value。如果是object,则将enabled,requireBase和rewriteLinks设置为各自的值。支持的属性:

     
      
  • enabled - {boolean} - (默认值:false)如果为true,将依赖history.pushState来更改支持的URL。将回退到不支持pushState的浏览器中的哈希前缀路径。

  •   
  • requireBase - {boolean} - (默认值:true)启用html5Mode时,指定是否需要存在标记。如果enabled和requireBase为true,并且不存在基本标记,则在注入$ location时将引发错误。有关详细信息,请参阅$ location指南

  •   
  • rewriteLinks - {boolean | string} - (默认值:true)启用html5Mode时,启用/禁用相对链接的URL重写。如果设置为字符串,则URL重写仅发生在具有与给定字符串匹配的属性的链接上。例如,如果设置为' internal-link',则只会为链接重写URL。请注意,属性名称规范化不适用于此处,因此' internalLink'不符合'内部链接'

  •