Nodejs& Angularjs,干净的网址

时间:2014-02-25 22:47:25

标签: node.js angularjs mod-rewrite

如何设置节点/角度以使index.html/appexample.com而不是example.com/app/index.html#/home

运行

我尝试将index.html放在节点服务器的根目录下,但仍将网址保留为example.com/index.html#/home

2 个答案:

答案 0 :(得分:9)

您需要启用html5mode。它的文档和注意事项可以找到here

以下是Brian Ford

的示例
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives']).
  config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
    // configure $routeProvider, then...
    $locationProvider.html5Mode(true);
  }
]);

angular-ui框架有example configuration用于连接到express.js:

var express = require('express');
var app = express();

app.use('/js', express.static(__dirname + '/js'));
app.use('/dist', express.static(__dirname + '/../dist'));
app.use('/css', express.static(__dirname + '/css'));
app.use('/partials', express.static(__dirname + '/partials'));

app.all('/*', function(req, res, next) {
    // Just send the index.html for other files to support HTML5Mode
    res.sendfile('index.html', { root: __dirname });
});

app.listen(3006); //the port you want to use

在Brian的文章中,您不必手动映射静态资产文件夹,因为他的示例提供了单个index.html,将部分映射到/partials/:name,然后与/api/*进行交互

答案 1 :(得分:0)

如果您在NODEJS服务器上使用Yoeman或grunt build。

您可以简单地将新文件server.js添加到根文件夹中,如果您的应用程序文件夹位于根目录和根文件夹中。



var express = require('express');
var app = express();

app.use(express.static(__dirname + "/app"));

app.all('*', function(req, res, next) {
  // Just send the index.html for other files to support HTML5Mode
  res.sendFile('/app/index.html', { root: __dirname });
});
var port = 1337;
app.listen(port); //the port you want to use
console.log('Server running at localhost:' + port);




确保您已在AngularJs配置中启用HTML5模式



angular.module('yourApp')
  .config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {

    $routeProvider
      .when('/some', {
        templateUrl: '../templates/some.html'
      })

      .otherwise({redirectTo: '/'});

    //enabling HTML5 mode
    $locationProvider.html5Mode(true);
  }
  ]);