Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS去掉URL中的#符号_Javascript_Angularjs_Node.js_Apache - Fatal编程技术网

Javascript AngularJS去掉URL中的#符号

Javascript AngularJS去掉URL中的#符号,javascript,angularjs,node.js,apache,Javascript,Angularjs,Node.js,Apache,我正在尝试修复我的应用程序,使URL显示为“/posts”,而不是“/#/posts”。我做了大量研究,现在我的app.js配置如下: angular.module("app", ["ngRoute", "app.controllers"]). config(function ($routeProvider, $locationProvider) { $routeProvider. when("/", { templateUrl: "views/partials/postlis

我正在尝试修复我的应用程序,使URL显示为“/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,
  });
});
这解决了一半的问题:URL在浏览器中显示时没有“#”符号。然而,如果我输入“localhost:3000/posts”,我会得到一个404,消息是“cannot get/posts”。这是什么原因造成的

提前谢谢,如果我需要发布更多的代码,请告诉我。

对于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]

您还需要设置服务器以了解如何响应这些请求。我想您需要手动拦截锚点击,并使用历史api重写url,而不需要浏览器从服务器请求页面,或者在服务器端添加htaccess之类的内容Hi,Patrick,如果您使用的是nodeJS服务器,试试毗瑟奴斯回答,如果没有,试试我的:-)干杯:-)很可能你的服务器上的任何当前路由配置都没有拦截/帖子。ähm,我可能错了,但_uudirname和express nodeJS是关于AngularJS的吗@Neo“无法获取/发布”响应由node.js服务器给出。它应该在服务器本身中配置。请参见问题下方汤姆的评论。?!?是的,它来自服务器,但谁说它是nodeJS服务器?:-)@Neo我使用过apache、tomcat和node.js服务器<如果没有路由,code>无法获得XXX响应将仅由node.js服务器给出。这不是真的,您将在任何带有AngularJS和X的灯堆栈上获得此响应