Nginx重写Angularjs的规则,以删除动态路由中url中的#hash

时间:2016-10-22 09:22:03

标签: angularjs nginx routing config html5mode

我做了以下事情:

AngularJS app

在app.js中:

$locationProvider.html5Mode(true);

在index.html中:

<base href="/">

nginx config

location / { try_files $uri /index.html; }

部署完成后,静态页面的工作正常(#hake sign被删除)。我可以直接转到http://fakeurl/abouthttp://fakeurl/download页;如果我刷新浏览器,页面仍会加载。

但是,当我直接进入动态页面时:

http://fakeurl/cars/:car_id

然后nginx将提供404。

如果我使用#path,那么它会重定向到没有#符号的路径并显示页面;但是当我再次刷新页面时,它会显示404.(这只适用于动态路线)

http://fakeurl/#/cars/:car_id

http://fakeurl/#/shops/:shop_id

我需要在nginx块中编写哪些重写规则来为我的动态路由提供服务?谢谢!

2 个答案:

答案 0 :(得分:0)

昨晚我烧了所有的午夜油,我在这里找到了一个解决方案。如果你有一个更好的,请在这里发布,以便我可以学习

https://gist.github.com/mreigen/4dc8effec8186315c3aac4ce6da46c9a

答案 1 :(得分:0)

我认为您可以使用此正则表达式模式^(.*)\/#并使用$1重写它。