服务器配置vue项目的默认路由,Vue-Router项目设置Nginx伪静态

Vue-Router项目设置Nginx伪静态

使用Vue + Vue-Router的项目,在history模式下,出现了刷新页面404的问题, 服务器为Nginx

出现刷新404的原因是Vue-Router定义的路由并没有真实的存在于服务器上, Nginx试图接管路由并按照路由地址寻找资源失败。

如: www.wddsss.com/src/a.png路由

当直接访问上链接时, Nginx会从server_name 为www.wddsss.com的路由配置的网站根目录下寻找资源, 也就是dist目录下去寻找 src/a.png;

// nginx的配置

server {

server_name www.wddsss.com;

root /www/project/blog/dist;

index index.php index.html;

}

如果dist目录下没有a.png的资源,服务器就会返回一个404的错误。

同理,我们在Vue-Router中定义的都是前端路由,服务器上没有真实的地址,所以解决404的方案是,如果nginx找不到资源,就返回项目的入口文index.html, 将路由让给前端来处理。

为了实现上述功能, 我们需要配置Nginx伪静态

一般来说,Nginx 配置如上,这就会出现Nginx去访问前端路由而出现了404的问题, 解决方案是配置Nginx的伪静态。

配置Nginx伪静态(try_files方式)

vim /etc/nginx/conf.d/xxx.conf;

server {

// 域名

server_name www.wddsss.com;

// 项目入口文件目录地址 保证有权限

root /www/project/blog/dist;

index index.php index.html;

// 配置伪静态

location / {

try_files $uri $uri/ /index.html;

}

}

重启配置

nginx -s reload

注意项目目录的用户必须是nginx, 且有读写权限。

现在的Nginx配置已经不会再返回404页面了, 因为我们默认返回了index.html文件, 那么如果用户访问的不是服务器的资源, 同时也不是前端路由,那么我们理当返回一个404的页面给用户展示, 这部分工作现在已经落在了前端上完成, Vue-Router中配置如下

const router = new VueRouter({

mode: 'history',

routes: [

...

{ path: '*', component: NotFoundComponent }

]

})

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值