解决 ss-panel-v3-mod_Uim魔改支付宝多域名的问题,让程序读取到我们地址栏输入的域名,这样避免出现之后无法回调导致不到账的问题。
为什么需要多域名回调?
在某些时候,我们会为站点绑定多个域名,举个例子,绑定域名为:1.com ,2.com,3.com,4.com,四个域名都能访问,但是存在一个问题,config.php内指定了一个固定域,假如我们指定的1.com,支付宝支付后,会把信息传到1.com,这没啥问题,同样的方法,其他几个域名由于绑定在一起,回调到1.com,也没问题,但是最大的问题是,当1.com域名被和谐或者到期后,我们需要修改config.php里面的站点地址为其他地址才能正确使用,非常麻烦,所以我们采用php的方法,让程序读取到我们地址栏输入的域名来进行回调,因为,地址能打开,一定是能使用的。
废话不多,看东西:
以下配置均修改.config.php文件。
原版配置:
//基本设置-------------------------------------------------------------------------------------------- $System_Config['debug'] = 'false'; //正式环境请确保为 false $System_Config['appName'] = '加速器'; //站点名称 $System_Config['baseUrl'] = 'http://1.com'; //站点地址 $System_Config['subUrl'] = $System_Config['baseUrl'].'/link/'; //订阅地址,如需和站点名称相同,请不要修改 $System_Config['appStartTime'] = '2019'; //站点成立时间,显示在页脚 copyright 部分
修改后的配置:
//基本设置-------------------------------------------------------------------------------------------- $System_Config['debug'] = 'false'; //正式环境请确保为 false $System_Config['appName'] = '加速器'; //站点名称 $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://'; $System_Config['baseUrl'] =$http_type .$_SERVER[HTTP_HOST]; //站点地址 $System_Config['subUrl'] = $System_Config['baseUrl'].'/link/'; //订阅地址,如需和站点名称相同,请不要修改 $System_Config['appStartTime'] = '2019'; //站点成立时间,显示在页脚 copyright 部分
最主要的一行:
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
此行判断出用户打开地址栏的http状态是http访问,还是https访问。
$System_Config['baseUrl'] =$http_type .$_SERVER[HTTP_HOST]; //站点地址
此行获取到http状态后,加上用户访问的地址,组成baseUrl信息。
这样配置后,不管我们给用户的地址是什么,当用户访问地址的时候,我们的回调信息自然跟随域名发生改变,避免了回调失败的问题。
配置不用改,支付宝那边不设置回调域名就可以了。。。