Typecho 用一个程序建多个网站

修改 type­cho 的源代码
打开程序目录的这个文件 /var/​Wid­get/​Op­tions.php
找到

/** 初始化站点信息 */
       if (defined('__TYPECHO_SITE_URL__')) {
           $this->siteUrl = __TYPECHO_SITE_URL__;
       }

在上面这段代码最前面加入下面的代码(域名改成你自己的)

if($_SERVER['SERVER_NAME']=='www.88ksk.cn'){
    $this->siteUrl = 'http://www.88ksk.cn';
}
if($_SERVER['SERVER_NAME']=='www.baidu.com'){
    $this->siteUrl = 'http://www.baidu.com';
}

如果只有一个域名只需要添加 1 个 多个域名依次添加



首先绑定两个域名(以下称 A域名 和 B域名)到空间目录上。
接着把typecho上传到空间里,打开 A域名 时,typecho就会自动检测并开始安装,安装是请修改数据库表前缀为 A_ ,安装过程非常顺利。
安装完后,把程序自动生成的文件config.inc.php下载下来备份,并删除服务器上的config.inc.php。
然后,用 B域名 打开网站,此时,typecho会再度自动检测并开始安装,此时请修改数据库表前缀为 B_ ,安装过程也一样非常的顺利。
再次把config.inc.php这个文件下载下来,对比前后两个文件,我们可以发现它们之间的区别就在于最后的数据库及表前缀的区别。
这两个文件是非常的相似,那么我们就可以模仿wordpress,让它也能一个程序建多个站点了。

if($_SERVER["HTTP_HOST"]=="A域名.com" || $_SERVER["HTTP_HOST"]=="www.A域名.com"){
$db = new Typecho_Db('Mysql', 'A_');
}
else if($_SERVER["HTTP_HOST"]=="B域名.com" || $_SERVER["HTTP_HOST"]=="www.B域名.com"){
$db = new Typecho_Db('Mysql', 'B_');
}
$db->addServer(array (
'host' => 'localhost',
'user' => '数据库用户名',
'password' => '数据库密码',
'charset' => 'utf8',
'port' => '3306',
'database' => '数据库名',
), Typecho_Db::READ | Typecho_Db::WRITE);
Typecho_Db::set($db);

这样一来,虽然是同一个程序,但当用 A域名 打开时,它调用的是前缀为A_的数据,当用 B域名 打开时,它调用的是前缀为B_的数据

评论