Javascript AngularJS去掉URL中的#符号
我正在尝试修复我的应用程序,使URL显示为“/posts”,而不是“/#/posts”。我做了大量研究,现在我的app.js配置如下: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
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的灯堆栈上获得此响应