用nginx配置前端路由history模式

3,295 阅读2分钟

背景

之前在倒腾网站时,因为对hash和history的要求没那么严格,所以一律采用hash的方式进行路由的切换,后期新加了一个留言板的功能,有用到github的开放api从而获得一个code码,但是发现hash的模式有问题,最后不得采用history的模式。

实施步骤

1.复现问题

 http://www.xxx.top/#/guest?name=aaa

假设这个是我当前页面的地址 调用github的开放api,请求完成后会返回一个code=xxxxxxx的字符串,并拼接到当前页面的后面可是我回调回来之后,发现拼接的有点不正常,拼接成了如下路径

 http://www.xxx.top/guestbookcode=123456?name=aaa  拼接路径
 http://www.xxx.top/guestbook?name=aaa&code=123456 期望路径

至此我推断可能是hash的模式出现了问题,当然不确定 如果大家有遇到这种情况用hash也可以解决,可以评论给我。

2.修改前端

因为是拿angular高版本写的,所以有固定的修改路由模式的属性,vue也有对应的属性 贴上修改前后的代码

修改前

修改后

就是通过控制这个useHash的属性来进行hash与history的切换 ok修改后现在前端页面已经是history的模式了

3.上线之后的问题

在经过一番该死的手动打包部署之后,终于网站更新了,初始化看着也没问题,可是刷新一下就404因为之前有在公司做过类似的项目,所以知道是nginx需要进行配置,那会儿是后端进行配置,可是现在只能自己去配,一通面向搜索引擎查找解决办法之后,看着大多数需要配置的都一样,于是开启了nginx配置的修改之路。

1. 产生问题的原因

上图应该说的很详细了,此处不再赘述

4.nginx.conf修改

新增三个箭头所指的配置内容 然后重启nginx,如果多次重启仍然不生效 请检查conf的操作者是不是root.

结语

至此该死的#终于干掉了,网站也可以正常访问,hash和history无所谓谁优谁略看个人的喜好以及场景需要吧。

欢迎大家一起学习交流哦!