AngularJS摆脱了URL中的#符号

时间:2015-08-03 18:07:15

标签: javascript angularjs node.js apache

我正在尝试修复我的应用,以便显示网址" / posts"而不是" /#/ posts"。我做了一堆研究,现在我的app.js配置如下:

angular.module("app", ["ngRoute", "app.controllers"]).

config(function ($routeProvider, $locationProvider) {
  $routeProvider.
  when("/", {
    templateUrl: "views/partials/postlist.html",
    controller: "IndexCtrl"
  }).
  when("/posts", {
    templateUrl: "views/partials/posttable.html",
    controller: "PostsCtrl"
  }).
  otherwise({
    redirectTo: "/"
  });

  $locationProvider.html5Mode({
    enabled: true,
    requireBase: false,
  });
});

这解决了问题的一半:网址显示在浏览器中,没有"#"符号。但是,如果我输入" localhost:3000 / posts",我会收到一条带有消息的404"无法获取/posts."可能导致这种情况的原因是什么?

提前致谢,如果我需要发布更多代码段,请告知我们。

1 个答案:

答案 0 :(得分:1)

对于Node.js服务器

app.set('views', path.normalize(__dirname) + '/app/views'); // set views folder path in express app
app.route('/*') // for all requests to your server
  .get(res.render('index')); //render index.html

对于Apache服务器

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]