【问题标题】:AngularJS: Page reload fails when using Angular Ui Router with Html5 mode enabled [duplicate]AngularJS:在启用 Html5 模式的情况下使用 Angular Ui 路由器时页面重新加载失败 [重复]
【发布时间】:2016-07-07 00:16:17
【问题描述】:

我在我的 Angular 应用程序中使用 Angular UI 路由器,并且我启用了 HTML5 模式,通过在配置中使用 $locationProvider 来删除我的 URL 中的#。

angular.module('myApp', ['ui.router'])
 .config(function($stateProvider, $urlRouterProvider, $locationProvider) {
    $urlRouterProvider.otherwise('/');
    $stateProvider
       .state('home', {
            url: '/',
            templateUrl: 'views/home.html',
            controller:'HomeController'
        })
        .state('about', {
            url: '/about',
            templateUrl: 'views/about.html',
            controller:''
       })
       .state('skills', {
            url: '/skills',
            templateUrl: 'views/skills.html',
            controller: ''
       })
       .state('projects', {
            url: '/projects',
            templateUrl: 'views/projects.html',
            controller: 'ProjectsController'
       })
       .state('contact', {
            url: '/contact',
            templateUrl: 'views/contact.html',
            controller: ''
       });
    $locationProvider.html5Mode(true);
});

我也设置了

<base href="/">

index.html 文件中的标记也是如此。路由工作正常,我可以导航到页面并删除 # 但是当我使用浏览器上的重新加载按钮刷新页面时,我得到一个 404 错误页面。

我正在使用 Webstorm IDE 进行开发。有人可以为此提供解决方案吗?

【问题讨论】:

    标签: javascript angularjs html url angular-ui-router


    【解决方案1】:

    通过启用 HTML5 模式 你的 url hash # 变成 hashbang #!然后 它在浏览器上返回没有 hashbang 的 url。 因此,即使浏览器上的网址类似于

    http://www.example.com/about
    

    实际的 hashbang url 是这样的。

    http://www.example.com/#!/about
    

    尝试根据此更改您的 htaccess 文件。 它应该位于您的 index.html 所在的公共目录中, 如果你使用的是 apache。

    RewriteEngine On  
      # If an existing asset or directory is requested go to it as it is
      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
      RewriteRule ^ - [L]
    
      # If the requested resource doesn't exist, use index.html
      RewriteRule ^ /index.html
    

    【讨论】:

    • 我在哪里可以找到这个 .htaccess 文件或者我需要在哪里创建它?
    • 您的 index.html 所在的公共目录?您可能需要查看隐藏文件
    • 我在 .htaccess 文件中编写了上述内容,并将其与 index.html 一起托管在服务器上,但现在它给了我 500 Internal Server Error。我的应用程序本身没有加载。
    • 请看下面的链接。 github.com/angular-ui/ui-router/wiki/…
    猜你喜欢
    • 2015-07-08
    • 2018-08-25
    • 2017-02-02
    • 2014-06-28
    • 2020-10-09
    • 1970-01-01
    • 2014-07-21
    • 2023-03-08
    相关资源
    最近更新 更多