查看./var/Widget/Options.php文件时有个初始化站点信息的代码。
/** 动态获取根目录 */
$this->rootUrl = defined('__TYPECHO_ROOT_URL__') ? __TYPECHO_ROOT_URL__ : $this->request->getRequestRoot();
if (defined('__TYPECHO_ADMIN__')) {
/** 识别在admin目录中的情况 */
$adminDir = '/' . trim(defined('__TYPECHO_ADMIN_DIR__') ? __TYPECHO_ADMIN_DIR__ : '/admin/', '/');
$this->rootUrl = substr($this->rootUrl, 0, - strlen($adminDir));
}
/** 初始化站点信息 */
if (defined('__TYPECHO_SITE_URL__')) {
$this->siteUrl = __TYPECHO_SITE_URL__;
} else if (defined('__TYPECHO_DYNAMIC_SITE_URL__') && __TYPECHO_DYNAMIC_SITE_URL__) {
$this->siteUrl = $this->rootUrl;
}
Typecho自定义了个全局参数TYPECHO_DYNAMIC_SITE_URL,默认是不启用的。如果你配置了启用,则会替换站点所有访问路径下的访问域名为你请求的域名。所以如果我配置开启这个参数,我就能在访问qq.ht时候,不会产生跨域,且所有链接前缀都是qq.ht,不受后台那个站点地址的约束。这样就能对多域名访问有很好的体验。
了解原理后只需要在网站根目录config.inc.php文件中后台路径下换行追加两行配置代码即可:
/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');
/** 开启动态域名(跨域补救) */
define('__TYPECHO_DYNAMIC_SITE_URL__', true);


没有回复内容