angular路由移除#号(跟nginx)

原创 2016年05月30日 23:22:24

刚进公司,公司使用的angular.js(1.3.0),主管跟我说要我移除angular项目访问路径URL里的#号移除(针对百度seo问题后来发现angular天生不适合做seo)。

angularjs框架定义了前端路由控制器,通过不同的url实现单页面(ng-app)对视图ng-view的部署刷新。

默认情况下:angular是不启动html5模式的,url中就会包括一个#号,用来区别angular管理的路径还是webserver管理的路径

angular框架提供了一种html模式的路由,可以直接移除#号

1.在路由里设置$locationProvider.html5Mode(true)

2.在angular页面添加base标签<base href="/">

如果用户是先访问首页,然后再跳转是由angular前端管理的url,是能正常访问的

(如果用户直接访问的不是首页,请求会先被提交到后台,后台路由没有对应页面的路由管理就好出现错误)

3.在nginx中增加try_files配置(在后台设置路由)

server {
        set $htdocs /www/deploy/mysite/onbook;
        listen 80;
        server_name onbook.me;
        location / {
            root $htdocs;
            try_files $uri $uri/ /index.html =404;
        }
}

附上公司网站






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

angularjs路由跳转页面后刷新报404错误

服务器环境: nginxangularjs自带路由功能,当通过路由跳转的新页面时,由于目录下并不存在该页面对应的静态文件,所以此时执行刷新页面,会报404的错误。进一步讲,原因是在刷新请求页面时,ng...

nginx对于AngularJS路由的rewrite

server { server_name yoursite.com; root /usr/share/html; index index.html; loca...

Linux下uWSGI+NGINX部署Django+AngularJs

最近尝尝鲜,试试单页面框架Augular,之前就有单页面前端开发经验,不过那是用jQuery的 最近jQuery缺点太明显了,太臃肿了,大的前端应用往往都是一个一个jq组建,插件堆积而出,加上对DO...

使用AngularJS构建大型Web网站

AngularJS是由Google创建的一种JS框架,使用它可以扩展应用程序中的HTML词汇,从而在web应用程序中使用HTML声明动态内容。在该团队工作的软件工程师Brian Ford近日撰写了一篇...
  • gchan
  • gchan
  • 2013年03月15日 01:51
  • 1854

在 nginx 中部署 angular 应用

最近使用Angular做了第一个应用,但是网上的教程大多是教如何开发,部署相对较少,所以这里就简单记录一下如何在nginx中部署Angular应用。 注:Angular应用可以编译成静态页面,然后...

Angular配置路由Demo

  • 2017年05月23日 22:09
  • 296KB
  • 下载

UI-Router:为什么开发者都不喜欢Angular.js内置的路由

Angular.js 是一个用来构建“富客户端”的神奇JavaScript框架。但是事实却是许多开发者却不使用其内置的路由模块。反而使用AngularUI项目的 UI-Router模块来代替之。这是因...

Angular ngRoute路由例子

  • 2016年03月23日 16:47
  • 215KB
  • 下载

Angular 路由demo

  • 2016年12月18日 18:35
  • 1.93MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:angular路由移除#号(跟nginx)
举报原因:
原因补充:

(最多只允许输入30个字)