javascript - AngularJS html5Mode 刷新失败

标签 javascript html angularjs

这是我的路由器:

var app = angular.module('tradePlace', ['ngRoute', 'tradeCntrls']);
app.config(['$routeProvider', '$locationProvider', function($route, $location) {
    $route.
    when('/', {
        redirectTo: '/index'
    }).
    when('/index', {
        templateUrl: './includes/templates/index.php',
        controller: 'indexCntrl'
    }).
    when('/register', {
        templateUrl: './includes/templates/register.php',
        controller: 'indexCntrl'
    }).
    otherwise({
        redirectTo: '/index'
    });

    $location.html5Mode(true);
}])

我的 html5 模式为 true,所以现在 URL 中没有 #。

如果我转到 mysite.com/,它会将我重定向到/index,但是当我重新加载页面 (f5) 或转到 mysite.com/index 时,我会收到 404 错误。

有办法解决这个问题吗?或者干脆不使用 html5 模式?

最佳答案

如果不从服务器运行您的项目并做一些特殊的工作来路由请求,就无法解决这个问题。它涉及以下步骤:

  1. 捕获静态文件请求(例如图像文件)
  2. 将其他请求发送到您的 index.html 以由您的路由器处理

例如使用 nodeJS express 服务器,它看起来像这样:

// Capture real static file requests
app.use(express.static(__dirname + '/public'));

// All get requests not captured above go to the client.
server.get('*', function (req, res) {
    res.sendfile(__dirname + '/public/index.html');
});

请注意,这不是 Angular 特有的问题。必须对使用 html5 pushState 的任何客户端应用执行相同的步骤。

关于javascript - AngularJS html5Mode 刷新失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24656819/

相关文章:

javascript - 从日期范围中获取周数

javascript - 如何使 Javascript 中的函数成为我的 html 的全局函数

jquery - 使用 jQuery 对齐两个表

javascript - 有没有办法在 HTML 文件中禁用 javascript?

java - 在 post 方法中从 Angular UI 发送两个参数并由 java API 处理

javascript - 如何从 json 返回特定对象(不区分大小写)?

javascript - 为什么我无法在对象数组的 for-in 循环中访问对象属性?

javascript - 使用 input[type ="range"] 将值减去到 moment.js

angularjs - Angular JS 可以替代 EJS 或 Jade 等模板引擎吗?

javascript - AngularJS 服务注入(inject)时未定义