Typecho设置可多域名访问
   一些代码   5 评论   1050 浏览

Typecho设置可多域名访问

   一些代码   5 评论   1050 浏览

原因

想给网站开启个新域名qq.ht,原以为只需在宝塔的rawchen.com原站点新增一个域名即可,不过该方法不行,因为一个域名的https访问是需要对应唯一的ssl证书,所以只能新建站点,单独配置ssl。新站点的根目录还是原网站。也就是只是公用服务和资源。问题在于新站点都配置完了,域名也解析了。但是访问该网站时静态资源报跨域问题使用不了。报错如下:

Access to font at 'https://rawchen.com/...../fontawesome-webfont.woff2?v=4.7.0' from origin 'https://qq.ht' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方法

查看./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);

本文由 RawChen 发表, 最后编辑时间为:2022-06-19 00:23
如果你觉得我的文章不错,不妨鼓励我继续写作。

发表评论
选择表情
  1. 方法成功了吗? qq.ht 打不开啊!

       Windows 10   Chrome 102
    1. RawChen 博主
      @云帆沧海

      这方法可以的,打不开是因为这国外域名配这国内服务器没法备案,所以有些人可以访问有些不行 icon_cry.png ,不过最近正在备案ivii.cn以后可以访问看看

         Android   夸克浏览器
      1. @RawChen

        短地址网站?

           Windows 10   Chrome 86
        1. RawChen 博主
          @叶小明的博客

          哈哈哈,这域名专门用来搞缩短网址web软件了 icon_razz.png

             Windows 10   Chrome 103
      2. @RawChen

        我已经试过了,我的域名 加WWW和不加测试的,方法可行,比网上的教程靠谱多了

           Windows 10   Chrome 103
Top