微信小程序在很早前就已经支持通过普通二维码发起调用同时支持域名匹配规则自适应链接进行打开跳转。
该功能主要是方便线下实体店在不需要更换已有二维码的情況下用户扫码跳转到小程序而不是公众号等等。
最近在配置蓝点网小程序时遇到个非常棘手的问题:小程序并没有连接我们自己的服务器那么怎么识别跳转
纠结无数分钟后才想明白原来微信是通过「截胡」的方式在自己的数据库里替换已有的域名实现小程序识别。
扫普通链接二维码打开小程序:服务器并没有连接微信
微信小程序后台配置二维码跳转小程序规则之后即可使用微信(6.5.6及其以上客户端版本)掃码打开小程序
业务域名支持任何已经经过备案的域名不需要与小程序绑定域名相同,具体地址规则也完全由开发者自定义
例如蓝点網小程序的普通二维码链接直接使用的是目录,按要求配置后需要提交验证文件证明域名为你所有
除提交域名验证文件外不需要再进行任何配置,那么为何扫码打开自己服务器链接能够自动跳转到小程序呢
答案就是微信直接劫持了已配置的域名地址,实际上通过链接生荿的二维码通过其他应用扫码还是这个链接
当通过微信扫码时微信识别到这个地址已经配置了小程序跳转,那么不再请求你的服务器而昰直接进行跳转
既然不再请求你自己服务器自然不需要你配置与微信连接,这也是很多开发者配置这个功能无比困惑的原因
微信为什麼要用这种方式:
小程序本质上说现在还是非常封闭的环境,实现小程序调用的方式很多但是唯独不能通过网页直接发起调用
如果能够從网页跳转到小程序那么线下的实体二维码,通过配置服务器更改目标参数也可以非常轻松的跳转
哪怕在微信内识别或者扫码打开任何網页也不能发起小程序,这也是微信小程序用这种规则匹配的主要原因
用户不使用微信扫码怎么办:
虽然很多用户使用微信作为主要扫碼工具但毕竟不是所有用户都这样,有些用户可能会使用其他工具去扫码
对于非微信扫码配置的普通二维码链接是无法跳转的,毕竟打開的只是你服务器内容与小程序没有任何关系
最终开发者还是要配置服务器调整链接内容,告诉用户这个链接是微信小程序码所以只能使用微信进行扫码
例如上面的蓝点网小程序跳转链接如果浏览器直接打开,就会提示「 此为小程序码仅支持使用微信进行扫码」