很多情况下我们可能需要将知识付费问答社区绑定到二级域名。而不是做为二级目录。这种情况下,可能需要对我们现有系统做一些配置改动,以配合知识付费问答社区的正常使用。

如果你的FastAdmin只有付费问答社区这一个应用,没有CMS或其它应用,你可以直接在后台插件管理修改配置,去除伪静态配置中的/ask即可,后面的文章都不用看。


如果你的FastAdmin前台是多应用模块,比如有index模块应用(官网),ask模块(问答模块),api模块(API接口),cms模块(CMS模块),admin模块(后台模块),那此时我们需要修改的配置就比较多了,请耐心一步一步跟着下面的教程走,如果有遇到什么问题,请反馈。

首先我们准备我们的域名

www.yoursite.com 对应 index模块
ask.yoursite.com 对应 问答模块
admin.yoursite.com 对应 admin模块
api.yoursite.com 对应 api模块

注意yoursite.com为你的根域名

首先我们需要在后台插件管理,知识付费问答社区配置修改二级域名前缀为ask

然后移除伪静态配置中的/ask

接着我们需要打开application/config.php

修改其中的url_domain_deploy改为true

因为我们是多域名了,还需要设置sessioncookie的域名,如下:

'session'                => [
'id'             => '',
// SESSION_ID的提交变量,解决flash上传跨域
'var_session_id' => '',
// SESSION 前缀
'prefix'         => 'think',
// 驱动方式 支持redis memcache memcached
'type'           => '',
// 是否自动开启 SESSION
'auto_start'     => true,
// SESSION存储目录,可选
//'path'           => RUNTIME_PATH . 'session',
// 共享域名
'domain'         => 'yoursite.com'

],
'cookie' => [

// cookie 名称前缀
'prefix'    => '',
// cookie 保存时间
'expire'    => 0,
// cookie 保存路径
'path'      => '/',
// cookie 有效域名
'domain'    => 'yoursite.com',
//  cookie 启用安全传输
'secure'    => false,
// httponly设置
'httponly'  => true,
// 是否使用 setcookie
'setcookie' => true,

],

注意domain为你的根域名

然后我们需要打开application/route.php,全部修改为

return [

//别名配置,别名只能是映射到控制器且访问时必须加上请求的方法
'__alias__'   => [

],
//变量规则
'__pattern__' => [
    'name' => '[\w\.\-\+]+',
    'id'   => '[0-9]+',
    'date' => '[0-9]{8}',
],
//域名绑定到模块
'__domain__'             => [
    //这里不需要添加问答、CMS绑定的域名前缀
    'www' => 'index',
    'api' => 'api',
    'admin' => 'admin',
],

];

配置完成后注意清除runtime的缓存和浏览器缓存,包含Cookie信息都需要清除。

其它应用

如果你还安装了其它应用,比如CMS,比如积分商城应用,应用对应的URL仍然无需要变更。比如

www.yoursite.com/cms/
www.yoursite.com/score/

等等。

跨域说明

如果你有其它页面接口调用api.yoursite.com时可能出现跨域问题,我们可以修改/public/assets/js/fast.js,修改其中的Fast.api.ajax方法,修改为

ajax: function (options, success, error) {

options = typeof options === 'string' ? {url: options} : options;
var index = Layer.load();
options = $.extend({
    type: "POST",
    dataType: "json",
    xhrFields: {
        withCredentials: true
    },
    success: function (ret) {
        Layer.close(index);
        ret = Fast.events.onAjaxResponse(ret);
        if (ret.code === 1) {
            Fast.events.onAjaxSuccess(ret, success);
        } else {
            Fast.events.onAjaxError(ret, error);
        }
    },
    error: function (xhr) {
        Layer.close(index);
        var ret = {code: xhr.status, msg: xhr.statusText, data: null};
        Fast.events.onAjaxError(ret, error);
    }
}, options);
$.ajax(options);

},

其中的

xhrFields: {

withCredentials: true

},

是我们新增加的代码,注意因为涉及修改了核心文件,需要使用php think min -m all -r js重新压缩打包下JS代码

温馨提示

如果启用了域名部署url_domain_deploytrue,可能会导致在CMS或问答社区中的验证码无法正常显示,此时需要手动修改vendor/topthink/think-captcha/src/helper.phpcaptcha_src的路径,将

return thinkUrl::build('/captcha' . ($id ? "/{$id}" : ''));

修改为

return thinkUrl::build('/captcha' . ($id ? "/{$id}" : ''), '', true, 'www');

请联系我 商务合作、广告投放、题目勘误、侵权投诉

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部