解决 VUE history模式 后端配置 微信支付目录限制5个 等问题
前言
作为小公司的WEB开发组组长, 本身为全栈工程师, 主攻方向为PHP.
最近将项目由MVC模式改为了MVVM, 做为小公司的为了节省成本, 招聘了一个新手前端, 编写VUE
新手的技术,无奈并不会配置,VUE的路由也不尽人意, 只能自己学VUE, 然后开始搭建环境.
解决问题
history模式打包后, 空白问题
后端人员如何配置的问题
多项目如何越过微信公众号支付只支持五个支付目录的问题
最终结果
访问地址
- 正常页面访问: https://m.cheduo.com/html/route/home
- 支付页面访问: https://m.cheduo.com/html/paydir/route-pay
为什么支付页面要写成这样, 这样就可以越过微信的只能填写五个开发目录的限制
微信授权目录填写 https://m.cheduo.com/html/paydir/
从而衍生出各大项目支付页面
a项目支付: https://m.cheduo.com/html/paydir/a-pay
b项目支付: https://m.cheduo.com/html/paydir/b-pay
路径解释说明:
- https://m.cheduo.com/ 域名
- html 识别是MVC模式还是MVVM模式 ( 基本上你们不需要做考虑, 此处是因为同一个域名下面有MVC的混合开发模式还有MVVM的前后端分离开发模式 )
- route 项目名 (公司有很多不相关的小项目, 在同一个域名下面)
- home 首页
- pay 支付页面
开发环境
VUE脚手架, NGINX配置
其它非NGINX后端配置 可以做参考
实操解决问题
下面的代码解决下面三个问题
打包上线空白问题
静态文件访问404问题
history 模式
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import Pay from '@/components/Pay'Vue.use(Router)export default new Router({mode: 'history',base: '/html/',routes: [{path: '/route/home',component: Home},{path: '/paydir/route-pay',component: Pay}]
})
VUE改成history, 打包上线后, 空白的根本原因是path路径找不到
build: {// Template for index.htmlindex: path.resolve(__dirname, '../../../html/route/index.html'),// PathsassetsRoot: path.resolve(__dirname, '../../../html/route'),assetsSubDirectory: 'static',assetsPublicPath: '/html/route/',...
- build: 是打包项目时候用的
- index: 这里是路径, 你们对应的修改路径到你们想要的地方
- assetsRoot: 静态资源路径, 你们对应的修改路径到你们想要的地方
- assetsPublicPath: 静态资源文件路径, 这里就是解决打包后静态资源访问不了的情况, 按照你们的实际情况修改
server{listen 99;server_name 192.168.1.24 localhost 127.0.0.1;root "F:/cheduoapp/PHP/mobile";index index.html;location /html/ {if (!-e $request_filename){rewrite ^/html/(.*)/(.*)$ /html/$1/index.html last;}}location /html/paydir/ {rewrite ^/html/paydir/(.*)-(.*)?(.*)$ /html/$1/index.html?$3 last;}location /nginx_status{stub_status on;access_log off;}location ~ /.*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ /.*\.(js|css)?${expires 12h;}location ~ /.well-known {allow all;}location ~ /\.{deny all;}
}
location /html/ {if (!-e $request_filename){rewrite ^/html/(.*)/(.*)$ /html/$1/index.html last;}}
- location /html/ 识别URL地址是 html 开头的形式
- if (!-e $request_filename) 判断是不是文件
- rewrite ^/html/(.)/(.)$ /html/$1/index.html last; 如果是html开头, 并且不是文件, rewrite重写访问index.html文件.
不要按照官方vue的死板硬套, 需要理解官方配置的目的, 官方 try_files $uri $uri/ $uri/index.html 的目的, 其实就是找到index.html文件罢了
下面碰到我们公司的情况, 一个域名下面多个不关联的项目怎么办呢
正常情况下
https://m.cheduo.com/html/a/pay a项目的支付页面
https://m.cheduo.com/html/b/pay b项目的支付页面
… 等等
那么微信填写支付目录的时候就要填写
https://m.cheduo.com/html/a
https://m.cheduo.com/html/b
…等等 这样很明显5个支付目录不够用
那么只能通过NGINX重写绕过去
微信支付验证的只是URL地址
说白了就是: 只要你前面一段是你填写的信息, 你页面是怎么访问的到的并不关心
这样我们只要想办法让我填写的支付目录 https://m.cheduo.com/html/paydir/ 能指向到各个项目就OK了
于是我就设定了这样一个URL地址访问规则 https://m.cheduo.com/html/paydir/项目名称-页面名称
例如:
https://m.cheduo.com/html/paydir/route-pay
对应
https://m.cheduo.com/html/route/pay => html=识别是MVVM模式, route=项目, pay=支付页面
NGINX配置的关键代码:
location /html/paydir/ {rewrite ^/html/paydir/(.*)-(.*)?(.*)$ /html/$1/index.html?$3 last;}
这段的意思是
将链接地址 /html/paydir/项目-页面?参数
改写成 /html/项目/index.html?参数的形式
到此处结束
下面奉献上我的route完整项目跟nginx配置参数下载地址
vue路由实例+Nginx配置 点击下载
解决 VUE history模式 后端配置 微信支付目录限制5个 等问题相关推荐
- 解决Vue history模式下使用嵌套路由打包部署后刷新页面为空白页
解决Vue history模式下使用嵌套路由打包部署后刷新页面为空白页 前言 问题分析 问题解决 结语 前言 众所周知,Vue路由有两种模式,默认hash模式,这种模式下url上会带"#&q ...
- vue history模式Nginx配置
当你使用 history 模式时,url就像正常的url,例如 "http://yoursite.com/mapp/subpage",不过这种模式还需要后台配置支持.因为我们的应用 ...
- Vue Router history模式的配置方法及其原理
转载地址:https://segmentfault.com/a/1190000019391139 vue-router分为hash和history模式,前者为其默认模式,url的表现形式为http:/ ...
- laravel ajax vue6,详解用vue.js和laravel实现微信支付
注:此项是微信公众号开发,请在往下看之前,先实现网页微信授权登陆功能,具体参看我简书的另一篇文章:https://www.jb51.net/article/117004.htm 1.打开app/con ...
- VUE前后分离调起微信支付
@ VUE调起微信支付 VUE前后分离调起微信支付 支付很简单,但每次都是在网上直接扒下来使用,老年人记忆,于是就自己记录一下,方便以后快速的粘贴复制; 第一步 :VUE 需要安装 微信支付模块 // ...
- php微信支付需要哪些设置,如何申请和配置微信支付接口?
如何让自己的网站能够在电脑端和移动端能够使用微信支付呢?你只需要申请微信支付接口并搭建一个支持微信支付的网站(同时支持电脑端.手机.微信公众号),我们以米拓企业建站系统及米拓商城模块为例. 安装米拓企 ...
- 微擎公众号如何配置微信支付?
转载自资源寺-微擎公众号如何配置微信支付? 本篇教程针对微擎对接好认证服务号后,配置微信支付的教程 多应用模块都含有微信支付等功能,比如购买会员.购买商品等,有些模块在其本身的参数设置上就需要设置微信 ...
- vue 微信支付的坑_vue_模式下h5微信支付
微信公众号配置网页授权域名:填写网址域名 微信开发者平台配置url: 访问url:http://www.bc.com/pay/pay 支付授权目录:http://www.bc.com/pay/ 访问u ...
- vue加跨域代理静态文件404_解决vue-router history模式和跨域代理 部署到IIS时404的一些问题...
先解决history模式的问题: 在网站根目录中创建web.config文件,内容如下: //通配所有连接 //因为是单页面,所以将所有连接重定向到 "/",就是指向我们项目中的首 ...
最新文章
- IT人面试必看!25个雷区和11个必问句!
- Google Brain与牛津大学主持最新《计算机视觉前沿》报告(146页PPT)
- 详细的摄像头模组工作原理!!!(转)
- ACM Smallest Difference
- 11.编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。...
- At least one JPA metamodel must be present!
- linux dns及时添加,在ARM Linux上成功实现添加DNS库
- 20155207王雪纯 《Java程序设计》实验一报告
- AI学会了视觉推理,“脑补”看不清的物体 | 李佳李飞飞等的CVPR论文
- (转载)年薪如何从10万跳到50万
- stm32呼吸灯c语言程序,基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)
- 耳机煲机软件测试自学,乐味煲耳机软件教程 只需三步轻松煲耳机
- 基于javaweb宠物领养平台管理系统设计和实现
- flame linux mac,Autodesk版蓝宝石插件 GenArts Sapphire V10.0 (Mac/Linux)
- mysql MMM方案
- 如何将自己的win7电脑变身WiFi无线网络热点
- Linux_多线程(进程与线程的联系_pthread库_线程创建_线程等待_线程正常终止_线程取消_线程分离_pthread_t与LWP)
- 数据结构(Java)-树-堆排序的实现
- 关于把秒换算成分钟和小时的c程序
- 科技公司产品专利申请介绍
热门文章
- 水果店入门教程视频,开水果店入门教程
- Luogu4156 WC2016 论战捆竹竿 KMP、同余类最短路、背包、单调队列
- psql屏幕输出全部结果_商业摄影:小商品摄影布光技巧,电子屏幕的拍摄方法...
- 网件Netgear多款路由器存在任意命令注入漏洞 R7000 POC已经开始流传 据说升级固件都没用...
- C# Asp.net中使用Elasticsearch5.x 的NEST客户端
- 如何完美解决DDoS攻击
- 路由器与交换机的基本工作原理思维导图
- 超短口语|两个单词一句话
- 我的世界curseforge整合包服务器搭建
- Stay Hungry, Stay Foolish !!