三步实现 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

  

原文地址:https://www.cnblogs.com/lishalom/p/6555156.html