angularjs的路由机制会给链接中添加一个“#”,是跳到子页面的锚点。由于项目需求,需要将链接中的“#”去掉,其实angular还提供了html5Mode()跳转机制。
1、在angular.module.config文件中注入“$locationProvider”
angular.module("app",["ui.router"])
.config(function($locationProvider){
$locationProvider.html5Mode(true);
})
2、在index.html的head内加入base标签设置href
<head>
<base href="/"><base>
</head>
其实前两步的设置已经可以实现去掉“#”跳转了,但是每次刷新或者直接输链接进到页面都会报找不到页面的错
这是由于WebServer的没有各个子页面的路由,所以报找不到的错误,让WebServer把属于AngularJS管理的路由URL,都发转到ng-app就可以解决404的问题了
3、设置WebServer配置
一般情况下,现在很多前端的编译器都自带webserver,很多前端小伙伴都没有自己搭过webserver,所以多说一点修改webserver的配置问题。
a. nginx下载安装
在nginx官方网站下载,下载好只好解压到任意位置,比如桌面的nginx文件夹中,直接cmd
cd C:\Users\admin\Desktop\nginx
进入解压的文件夹下
start nginx
打开浏览器输入localhost直接到nginx欢迎界面,说明webserver已经启动
b.接下来就是把自己的项目添加到服务器下
其实很简单,把自己项目放到nginx文件加下的html里,index.html覆盖原来的index.html就好。
c.修改 nginx 配置为 webserver 路径配置
打开nginx.conf,在http{}下第一个server的location / {} 下的index替换掉,替换为
location / {
root html;
try_files $uri $uri/ /index.html =404;
}
然后重新加载服务
nginx -s reload
浏览器刷新不会再出现找不到页面的问题了。