三步实现 AngularJS URL 去 # 号
1、打开源码,设置 $locationProvider 模块,将html5Mode设置为true.
推荐阅读:angularjs 官方 $location文档 http://docs.angularjs.org/guide/dev_guide.services.$location
2、在 index.html 入口文件中设置 <base> 标签定义相对路径(index 在根目录下的地址)
HTML5Mode设置为true就会自动的解析相对链接
到这此为止,如果用户从首页index)开始访问,然后跳转到其他页面是一切正常的(前台HTML5Mode 起作用)。但如果用户通过URL 直接打开非首页页面(后台解析URL),就会出现404错误。
简单地说,这是因为直接输入的URL(无#号)地址不受AngularJS 的路由系统管理,而服务器本身也未通过此路径找到这样一个文件,于是 apache 就抛出了这样一个错误。
想明白这个点,解决方法就很明了了,当直接输入不带#号的URL 地址时,我们让 apache 的 404 错误处理机制给URL 加上 # 号,那么AngularJS 就能正确解析了。
而错误的URL导向404页面的功能,是可以自己在 AngularJS/UI 提供的路由中去处理的。
3、404重定向
在apache的 .htaccess 文件中添加一下配置
重启 apache ,大功告成!
参考文章:
http://blog.fens.me/angularjs-url/
https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag