Idea Press 猪头六独立博客:独立之人格,自由之思想。

如何使用一个wordpress程序搭建多個网站

16:20:59 March 11, 2010 by:

如果你打算用Wordpress来建大型CMS门户网站,那么可能会牵扯到在主站下建立二级域名的网站。自然而然你可能会想到这几个站点分别用一个wordpress来搭建,而且我最开始也是这么做的。

这种方法简单却不实用。后来研究了一下酋长的wordpress知名网站Wopus,发现其实是用一个wordpress程序搭建的(酋长的wopus站不是一般的牛X,值得各位wordpress爱好者仔细研究,而且酋长人很好,大家可以去围观。)

在确认了这种方法可行之后,接下来就是上网搜集相关技术。过程就不说了,高人就在这里:http://www.cbmland.com/post/544/oop-use-wordpress-as-class.html

这篇文章讲的是如何同一个wordpress程序下搭建多个独立域名的网站,那么很容易依此类推,同一程序搭建一个主站多个二级域名分站亦有可能。(二级域名和顶级域名之间其实是没有明确的界定的,在某种情况下可以这么理解:没有二级域名,也没有N级域名,所有的域名都是顶级域名。)

先给大家演示下安装后的效果:我的个人站http://ideapress.orghttp://t.ideapress.org 即是安装在同一wordpress下。

废话少说,下面我把详细步骤写出来。

第一步:t.ideapress.org解析至主站的IP。

第二步:将该域名绑定到主站上(注意:不是以子域名的形式,而是以附加域名的形式,和主域名访问同一目录)。我的网站用的是cPanel控制面板。其操作是给主域名ideapress.org增加一个“暂停的域”。(注意:不是附加域,也不是子域)这里要特别说明的是,奶奶的cPanel面板不知哪个白痴汉化的,“暂停的域”的确切意思是“临时停放域名”,就是给主站附加一个域名,而cPanel里的“附加域”其实是新建一个网站,和原来网站无关。有误导人之嫌,实在让人无语。而且在你添加一个暂停的域之后竟然提示“添加已停止的域 暂停的域t.ideapress.org已经为你成功生成”,真TMD无厘头。

暂停的域t.ideapress.org

所谓的暂停的域

如果你用的是DA面板,那么点击Advanced Features→“绑定域名”即可,注意:不是子域名。还有一点:域名解析生效需要一段时间。生效后检查一下,看是否分站域名和主域名是否都是指向主站,是的话就搞对了。

第三步:为分站创建一个新的数据库。或者和主站使用同一数据库,但需要注意的是,数据表前缀不要和主站重复。

第四步:修改主站根目录下的wp-config.php文件(注意备份),修改后应该是这个样子的:

<?php
if($_SERVER["HTTP_HOST"]=="www.ideapress.org" || $_SERVER["HTTP_HOST"]=="ideapress.org"){
define('DB_NAME', '数据库');
define('DB_USER', '用户名');
define('DB_PASSWORD', '密码');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp1_';
}else if($_SERVER["HTTP_HOST"]=="t.ideapress.org" || $_SERVER["HTTP_HOST"]=="t.ideapress.org"){
define('DB_NAME', '数据库');
define('DB_USER', '用户名');
define('DB_PASSWORD', '密码');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'wp2_';
}
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

最后一步:将修改后的wp-config文件上传替换掉原来的,清除一下缓存,大功告成。是不是很简单?通过这种方式可以在同一wordpress程序下建立N个网站。
这样的话就可以不用考虑wordpress MU了,据说优化很差,比较臃肿,不推荐使用。


看大家怎么说 · · · · · ·

已有55位看官发表了高见
  1. 大尾巴狼 says:

    这个绝对是进阶级的文章 不错不错

    • 豬頭六 says:

      呵呵:)這個技術HACK了wp-config,其實這個不止適用於wordpress 對於其它PHP程序同樣適用。應該屬於革命性的技術。

      • 西湖倦客 says:

        革命性技術?不知道這樣做的意義何在?既然是兩個數據庫了,再裝一個wp也不麻煩,個人以為純屬多此一舉

        • 豬頭六 says:

          你估计没看懂,可以安装在1个数据库下啊,随便。只要写上不同的数据表前缀了,呵呵,当你开十个以上分站点的话就看到好处了,这个大大优化了目录结构,更清晰,更SEO friendly。

  2. popo says:

    学习了。。。。。。

  3. 设计是空 says:

    其实我还是看不懂,不过以后用的到

  4. hodz says:

    不错,以后用WP可能会用到

  5. 小小 says:

    好专业的blog,特来支持一个

  6. ikeeptrying says:

    我不用wp~~
    不过wp的真的很评论~

  7. 集趣 says:

    有一个站就可以了哦

  8. 365网购吧 says:

    这样通过那个地址访问后台呢,不明白啊。

    • 豬頭六 says:

      呵呵:)每个域名还是自己单独的后台,只不过共用一个程序而已。网站A和网站B来讲a.com的后台为a.com/wp-admin;b.com的后台为b.com/wp-admin,二级域名站同理。

      • 365网购吧 says:

        wp-config.php修改的一个地方,我的是同一个数据库,不同的表头。if($_SERVER["HTTP_HOST"]==”A域名”) {
        $table_prefix = ‘wpa_’;

        }else if($_SERVER["HTTP_HOST"]==”B域名”) {
        $table_prefix = ‘wpb_’;

        我的wordpress安装目录和域名同级的
        这样的形式
        /wordpress
        /A域名
        /B域名
        也是这样访问后台吗? /A域名/wp-admin 或者/B域名/wp-admin
        我刚才试了,二级域名还没解析好,不知道行得通不? :(

        • 豬頭六 says:

          必须先解析域名才可以。你的A域名和B域名是两个独立域名么?

          • 365网购吧 says:

            是的,两个是独立域名,ixwebhosting主机,新建一个二级域名,它也是在跟目录下面。我不明白,wordpress只安装在一个目录下面,根据不同域名读出不同的数据内容我能明白,但是它怎么能产生2个后台管理呢?
            我不懂程序,是个外行,抱歉。汗

          • 豬頭六 says:

            @365网购吧:)呵呵 你安装上就知道了,比如你网站上已经安装了一个a.com你只需要修改a.com的wp-config文件,想再安装几个网站都可以。不过注意一点:二级域名也必须当顶级域名用。绑定到根目录,而不是绑定到主域名的子目录。安装后所有网站共享一个后台。你在wp下安装的所有插件和主题在每一个域名后台下都可以看得见,但是你可以分别设置是否启用,并选用不同主题。

          • 豬頭六 says:

            @365网购吧:) 你想,你安装到不同的数据库,或者至少数据表前缀不一样,每一个域名对应一个wp-admin和wp-option文件,当然就是不同的管理后台了,这没什么奇怪,要是能在一个后台管理这么多网站岂不成了wordpress MU?

        • 豬頭六 says:

          @365网购吧 搞定了没有?给你回个信,顺便测试一下我网站新增加的邮件评论回复通知功能,O(∩_∩)O哈哈~。

          • 365网购吧 says:

            看到你的邮件了,回复功能正常。:)
            我安装你上面说法做了,A网站下安装了wordpress,然后改写了wp-config.php,但是改了后连A网站也打不开了,一片空白。暂时就麻烦点,我就2个站,安装2次好了。
            现在又有一个问题了,cos-html-cache静态化插件没法用,目录页面打开显示成难看的根目录样子。你看看我的.htaccess是不是有问题

            DirectoryIndex default.php index.html index.php (就这个是我加的的,下面是从主机安装wordpress时自带的)

            RewriteEngine On
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule . /index.php [L]

            麻烦你了,好不容易找到一个热心人 :)

          • 豬頭六 says:

            @365网购吧 现在的问题只是缓存不可以用吗? 我缓存用super cache 所以没有碰到你那个问题,呵呵:) 这个就得看到网站才能明白估计。你可以把你网址发邮件给我:webmaster#ideapress.org

  9. 一起为 says:

    非常专业!!!
    你好,你能否帮忙看一下http://www.cndzz.com/这个网站是用的什么程序搭建的啊????
    感谢

  10. crossyou says:

    第一次来,留个记号。嘿嘿

  11. 米迦勒 says:

    博主,问一下。

    这样做之后,缓冲插件有冲突吗?

    • 豬頭六 says:

      @米迦勒 缓存插件和google sitemap XML插件均无冲突。

      • 米迦勒 says:

        多谢^^

        缓存插件,您是否有使用呢?用的哪个?
        google sitemap没有冲突,这个?插件应该是在网站根目录建立sitemap.xml,这样的话,不同的网站应该不是不同的sitemap.xml。
        是不是,不同的网站,用不同的名字哦,比如sitemap1.xml, sitemap2.xml,
        呵呵,您是这样操作的吗?

  12. woiweb says:

    学习了!不过里面的连接好像打不开了。

    这段。

    在确认了这种方法可行之后,接下来就是上网搜集相关技术。过程就不说了,高人就在这里:http://www.cbmland.com/post/544/oop-use-wordpress-as-class.html

  13. Wilson Mizner says:

    这是我看到的最实用最简单最有效的1个WordPress只能装多个站点的指导文章 谢谢!
    WP-HIve我试过多次 不好用
    我怎么没有想到域名停放啊

  14. eason says:

    能不能使用不同模板呢??请教。

    • 豬頭六 says:

      @eason 当然可以,分别登陆管理界面启用你要的模板即可,两者不冲突。插件也是。

  15. xxm says:

    我用的是ixwebhosting 的空间好像设置有很多困难,老大能教我一下吗

  16. Tom says:

    非常感谢提供这么好的方法。有一个问题请教:按照上述方法新建了第二个站之后,我想把原来站的数据库导入到新站中,新站选取原站点部份内容,请问应该怎样进一步操作?谢谢

  17. Heylogo says:

    试验成功…谢谢!

  18. 清日 says:

    有没有QQ呀,想请教一下呀!

  19. seawane says:

    这样子实现的是不同的站点访问同一对像主页而已。如果是本站下的二级域名访问不同的页面呢?

    • 豬頭六 says:

      @seawane 呵呵,访问的是完全不同的两个网站,独立的数据库。当你看到这个例子的时候我那个二级域名的网站已经删掉了。

    • 豬頭六 says:

      @seawane 是的,100个都没问题,共用一个WP。前提是你空间的数据库数量和域名绑定个数够用。

      • seawane says:

        Thanks!只要数据空间足够,共享一个数据库不行么?我空间能绑20个域名。另外,再建多个的话语句是在$table_prefix = ‘wp1_’;后面不断地加
        else if($_SERVER["HTTP_HOST"]==”x.xxx.com” || $_SERVER["HTTP_HOST"]==”x.xxx.com”){
        define(‘DB_NAME’, ‘数据库’);
        define(‘DB_USER’, ‘用户名’);
        define(‘DB_PASSWORD’, ‘密码’);
        define(‘DB_HOST’, ‘localhost’);
        define(‘DB_CHARSET’, ‘utf8′);
        define(‘DB_COLLATE’, ”);
        $table_prefix = ‘X_’;
        }

  20. 夏星辰 says:

    不行啊,DA平台,选择了 域名绑定,绑了 dadmom.me(还有个 创建作为别名选项,但是不管选不选这个结果都一样),访问dadmom.me的时候直接转到yesstars.com了,你可以试试看,文件改的没问题。
    数据库在一起,只是表前缀不同,wp-config.php修改的没问题,但dadmom.me在数据库中并不存在表,但应该不是这个原因吧?如果没表应该出现安装界面而不是直接转接到yesstars.com吧。

  21. Benny says:

    不知道wordpress 这样的话,主题可否能设置成不一样的?

  22. wangjiayu says:

    最后google到这个插件:wp-no-category-base,插件很小,只有几KB,安装也没碰到什么障碍,功能OK。于是给公司和我的所有网站都安装上了。而且支持在一个wordpress程序下搭建多个网站下使用,只需要分别启用就OK了,兼容性不错。 [...]

  23. 想荣 says:

    不成功。算了 ,我还是再安装一个wp好了

  24. Mason says:

    我也知道这样可以把数据给分开,当做两个站点。但是他们如何公用User表呢???用没有响应的插件来做这个解决这个事情呢?

Trackbacks

Check out what others are saying about this post...
  1. [...] 最后google到这个插件:wp-no-category-base,插件很小,只有几KB,安装也没碰到什么障碍,功能OK。于是给公司和我的所有网站都安装上了。而且支持在一个wordpress程序下搭建多个网站下使用,只需要分别启用就OK了,兼容性不错。 [...]

  2. [...] 最后google到这个插件:wp-no-category-base,插件很小,只有几KB,安装也没碰到什么障碍,功能OK。于是给公司和我的所有网站都安装上了。而且支持在一个wordpress程序下搭建多个网站下使用,只需要分别启用就OK了,兼容性不错。 [...]



我想说两句 · · · · · ·

告诉我你的想法... , 如果你想在评论中显示自定义头像, 请点击 gravatar!

注意:广告、垃圾评论、灌水请绕行。

评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, Jack是本文的评论者之一,则使用'@Jack '(不包括单引号)将会自动将您的评论发送给Jack。(注意:大小写需一致)