Angularjs 移除#!从我的url

Angularjs 移除#!从我的url,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我在angular使用ui路由器进行路由。我遇到了一些奇怪的#在我的主url之后 http://localhost/bootstrap/newBlogProject/index.html#!/主页 在index.html之后的上述url中,我必须删除此#符号。尝试设置$locationProvider.hashPrefix(“”); 下面是我在路由配置中设置hashPrefix的示例 function config($httpProvider, $routeProvider, $location

我在angular使用ui路由器进行路由。我遇到了一些奇怪的
#在我的主url之后

http://localhost/bootstrap/newBlogProject/index.html#!/主页


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

尝试设置$locationProvider.hashPrefix(“”); 下面是我在路由配置中设置hashPrefix的示例

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

尝试设置$locationProvider.hashPrefix(“”); 下面是我在路由配置中设置hashPrefix的示例

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

您必须启用$locationProvider的HTML5模式以避免使用hashBang(#!)

它将迫使ui路由器使用历史api来操作URL,并避免使用hashBang。 就像我解释的那样

如果为布尔值,则将html5Mode.enabled设置为值。如果对象已启用,则设置为启用,并要求将链接重新建立和重写到相应的值。支持的属性:

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

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

  • 重写链接-{boolean | string}-(默认值:true)当启用HTML5模式时,启用/禁用相对链接的URL重写。如果设置为字符串,URL重写将仅在具有与给定字符串匹配的属性的链接上发生。例如,如果设置为“内部链接”,则URL将仅为链接重写。请注意,属性名称规范化在这里不适用,因此“internalLink”将与“internalLink”不匹配


您必须启用$locationProvider的HTML5模式以避免使用hashBang(#!)

它将迫使ui路由器使用历史api来操作URL,并避免使用hashBang。 就像我解释的那样

如果为布尔值,则将html5Mode.enabled设置为值。如果对象已启用,则设置为启用,并要求将链接重新建立和重写到相应的值。支持的属性:

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

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

  • 重写链接-{boolean | string}-(默认值:true)当启用HTML5模式时,启用/禁用相对链接的URL重写。如果设置为字符串,URL重写将仅在具有与给定字符串匹配的属性的链接上发生。例如,如果设置为“内部链接”,则URL将仅为链接重写。请注意,属性名称规范化在这里不适用,因此“internalLink”将与“internalLink”不匹配


已使用$locationProvider.html5Mode(true),但不起作用。您使用的是angular的哪个版本?您的浏览器是什么(带版本)?(非常)旧浏览器无法使用HTML5模式。已使用$locationProvider.HTML5模式(true),但不工作。您使用的是什么版本的angular?您的浏览器是什么(带版本)?(非常)老的浏览器不能使用HTML5模式。