<代码> vue-router> 代码分为<代码>哈希代码>和<代码> 代码>历史模式,前者为其默认模式,url的表现形式为<代码> 代码> http://yoursite.com家里,比较难看。后者的url表现形式为http://yoursite.com/home <代码> 代码,比较美观。
但如果要使用<代码> 代码>历史模式,我们需要在后端进行额外配置。本文将讨论如何配置以及为什么要这样配置。
我们来看看官方文档是教我们怎么配置的:HTML5历史模式。
首先要将<代码> 代码>模式设置为<代码>历史> 代码:
const路由器=new VueRouter ({ 模式:“历史”, 路线:[…] })
然后设置后端(这里采用的nginx):
位置/{ try_files uri uri//index . html美元; }
然后就……没了!显然官方的教程讲的比较简略,并且我们参照这个教程实际上还是会遇到一些问题。
强烈建议:阅读这部分之前,先看一下nginx的这部分文档和这部分文档。
既然官方文档教我们这样做了,我们就按照它说的来实践一下。
首先,我们将<代码> 代码>模式设置为<代码> 代码>历史,但不配置后端,然后,假如我们的路由是长这个样子的:
const路线=[ {路径:/home,组件:回家}, {路径:“/?重定向:“/home”});
我们用nginx部署项目,然后在地址栏输入<代码> http://localhost: 8080> 代码(这里配置的端口是8080),你会发现地址栏之后会变为<代码> http://localhost: 8080/家> 代码,并且<强>看起来强>一切正常,<强>似乎>强路由也可以正常切换而不会发生其他问题(实际上会发生问题,后面会进行讨论)。看起来好像不需要按官网告诉我们的那样配置后端也能实现历史<代码> 代码>模式,但如果你直接在地址栏输入<代码> http://localhost: 8080/家> 代码,你会发现你获得了一个404页面。
那么<代码> http://localhost: 8080> 代码为什么可以(部分)正常显示呢?道理其实很简单,你访问<代码> http://localhost: 8080 代码>时,静态服务器(这里是nginx)会默认去目标目录(这里为<代码> 代码>中位置<代码>根> 代码所指定的目录)下寻找<代码>索引。>