带#号的url
http://localhost:8082/#/dashboard
不带#号的url
http://localhost:8082/dashboard
带#的原因
- 使用angularjs的朋友都应该了解,angularjs框架定义了自己的前端路由控制器,通过不同url实现单面(ng-app)对视图(ng-view)的部署刷新,并支持html5的历史记录功能
- 对于默认的情况,是不启动html5模式的,url中会包括一个#号,用来区别是angularjs管理的路径还是webserver管理的路径。
解决办法
AngularJS框架提供了一种HTML5模式的路由,可以直接去掉#号,通过设置$locationProvider.html5Mode(true)就行了。
- 在angular.module.config文件中注入“$locationProvider”
angular.module("app",["ui.router"])
.config(function($locationProvider){
$locationProvider.html5Mode(true);
})
- 在index.html的head内加入base标签设置href
<head>
<base href="/"><base>
</head>
存在问题:其实前两步的设置已经可以实现去掉“#”跳转了,但是每次刷新或者直接输链接进到页面都会报找不到页面的错
这是由于WebServer的没有各个子页面的路由,所以报找不到的错误,让WebServer把属于AngularJS管理的路由URL,都发转到ng-app就可以解决404的问题了
设置WebServer配置
一般情况下,现在很多前端的编译器都自带webserver,很多前端小伙伴都没有自己搭过webserver,所以多说一点修改webserver的配置问题。
nginx下载安装
- 在nginx官方网站下载,下载好只好解压到任意位置,比如桌面的nginx文件夹中,直接cmd
cd C:\Users\admin\Desktop\nginx
进入解压的文件夹下
start nginx
打开浏览器输入localhost直接到nginx欢迎界面,说明webserver已经启动 b.接下来就是把自己的项目添加到服务器下
其实很简单,把自己项目放到nginx文件加下的html里,index.html覆盖原来的index.html就好。
- 修改 nginx 配置为 webserver 路径配置
打开nginx.conf,在http{}下第一个server的location / {} 下的index替换掉,替换为
location / { root html; try_files uri/ /index.html =404; } 然后重新加载服务
nginx -s reload
浏览器刷新不会再出现找不到页面的问题了。