Typecho如何设置多域名,如何解决多域名下静态资源跨域报错问题。

毒蛊博客
2022-09-07 / 4 评论 / 188 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月05日,已超过116天没有更新,若内容或图片失效,请留言反馈。

前言

今天把ssl添加上,上一次过期到现在已经过去三个月了,宝塔免费的白嫖不了就用腾讯云的吧,因为网站系统是typecho的,所以还稍稍折腾了一会。

一、如何给Typecho网站设置多域名

如果您的网站没有CDN,可能只需要以下设置就完事了。

方法① 301重定向
说白了就是让你的子域名硬跳转到主站。
首先打开文件(宝塔面板可直接在网站重定向面板上设置)

vi /etc/nginx/sites-enabled/domain.com.conf

然后写入

server {
    listen xxx.xxx.xxx.xxx:xx; //你的IP:端口
    server_name domain.com;  //被重定向域名
    return 301 http://orgindomain.com$request_uri; //向源站重定向(带目录请求)
}

这个方法实在是下策,对seo优化和打开速度都不友好,不是很推荐。

方法② 修改Typecho配置文件

在Typecho网站根目录下 config.inc.php 中 , 找到

Typecho_Db::set($db);

这句话,在其后写上:

Helper::options()->siteUrl='http://www.domain.com';//您的子站点

方法③ 修改Typecho框架文件

在网站根目录下 /var/Widget/Options.php 中,找到

/** 初始化站点信息 */
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;
}

在它的前面加上:

if($_SERVER['SERVER_NAME']=='www.orgindomain.com'){ //判断地址栏域名
    $this->siteUrl = 'http://www.orgindomain.com';  //将站点总体域名替换为地址栏域名
}

以上方法对大多Typecho网站都适用。
可是,由于我加了CDN,源站和子站即使是同一个项目,也不会被允许,依旧存在跨域问题。

如何解决跨域问题

这时候有一个非常好的办法。
在做兼容多站点时,我在Typecho的框架 /var/Widget/Options.php 中发现这样一段话:

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_DYNAMIC_SITE_URL 引起了我的注意。经过测试,我发现:
在Typecho网站根目录下 config.inc.php 中,

/** 用户中心(相对路径) */
define('__TYPECHO_USER_DIR__', '/user/');

后面加上

/**开启动态域名/跨域补救**/
define('__TYPECHO_DYNAMIC_SITE_URL__',true);
结尾

即可完美解决网站资源跨域问题!
目前我的个人站: 毒蛊博客
和子站点:毒蛊博客1
都能够完美访问了!

0

评论 (4)

取消
  1. 头像
    笔记堡
    Android · Google Chrome

    其实在网站的config.php里面添加最后一步就行了,开启动态域名补救。

    回复
    1. 头像
      毒蛊博客 作者
      Android · QQ Browser
      @ 笔记堡

      腻害腻害,不愧是大佬

      回复
  2. 头像
    毒蛊博客 作者
    Windows 10 · Google Chrome

    看看

    回复
  3. 头像
    淄博漏水检测
    Windows 10 · Google Chrome

    感谢分享,赞一个

    回复