近期完成的一个插件:版块绑定域名补丁0.1 beta for Discuz! 7.1

时间: 2009-10-23 / 分类: 技术相关 / 浏览次数: 1,747 views / 10个评论 发表评论

[文章作者:叶歆昊   最后修改:2010-07-20   转载请注明原文链接:http://littz.com/a-plug-in-forum-binding-domain-for-discuz-7-1.html]

插件有更新到0.1,请从论坛下载

版块绑定域名补丁 0.1 beta for Discuz! 7.1 正式版
http://www.discuz.net/thread-1456298-1-1.html

一、功能简介:
应广大网友需求,提升Discuz!论坛的SEO效果,现开发本补丁。使用本补丁后的效果为:论坛主域名使用http://w.littz.com访问,版块1绑定域名后可以使用http://a.w.littz.com,版块2绑定域名后可以使用http://cc.littz.com访问,甚至版块3可以绑定www.yourdomain.com的域名,其他没有绑定域名的版块按照默认的http://w.littz.com/forum-4-1.html访问。
因涉及核心程序的修改,没有用到Discuz!的插件机制,通过直接修改文件的方法,操作有点复杂,敬请理解。
提示:此版本为0.1 beta,功能尚不完善,稳定性尚有不足,正在测试中,谨慎使用。请注意备份数据,跟帖讨论。
编码语言包方面应该是一样的,只是templates/default/admincp.lang.php文件不同,对照修改下吧。

二、环境要求:
在满足安装Discuz!论坛的基础上,还需满足一下要求。
1、有多个域名(子域名或者独立域名)可修改DNS A记录解析;
2、服务器支持域名泛解析 或者 可设置多个域名请求至同一目录(一般为独立主机);
3、服务器支持Rewrite。
4、原论坛访问地址为直接域名形式,不能是目录形式,例如http://bbs.littz.com,而不能是http://littz.com/bbs

三、安装步骤:
1、安装Discuz! 7.1(已安装的站点可跳过,同时注意备份文件和数据);参考 http://event.comsenz.com/discuz71/
2、打开Discuz! 7.1的URL 静态化(Rewrite伪静态);
3、进入管理后台 => 工具 => 数据库 => 升级 执行如下SQL语句:

ALTER TABLE `cdb_forums` ADD `fdomain` CHAR( 50 ) NOT NULL;

提示“Discuz! 数据结构成功升级,影响的记录行数 xx,请返回。”则升级成功。
若管理后台无执行SQL语句权限,请到phpmyadmin或者MySQL命令行中执行。cdb_注意修改为相应的表前缀。
4、将补丁包中的文件覆盖Discuz! 7.1对应的文件。若自己已修改过相应的程序,请参照 原始文件 以及 文件修改记录 修改指定的几个程序文件。
5、准备多个用于板块绑定的域名,A记录解析至同一服务器IP;
6、服务器端设置域名泛解析 或者 多个域名请求 至 与Discuz! 7.1相同的目录(非子目录绑定),请咨询空间商;
7、后台管理 => 板块 => 版块管理 中,可以设置每个版块需要绑定的域名。注意域名的绑定形式是cc.littz.com,不带http://,后面也不带 /的。
8、后台管理 => 全局 => 站点信息 中,设置网站URL为论坛URL,输入http://bbs.littz.com,后面不带/
9、后台管理 => 工具 => 更新缓存。
10、修改config.inc.php文件,设置cookies作用域,按照主域名前加.的形式,例如$cookiedomain = ‘.littz.com’;

四、后续操作:
如果需要修改绑定的域名,重新执行5~7步骤。

五、卸载方法:
1、从官方网站重新下载Discuz! 7.1程序文件覆盖相应的修改文件。
2、管理后台 => 工具 => 数据库 => 升级 执行如下SQL语句:

ALTER TABLE `cdb_forums` DROP `fdomain`;

演示:



10个评论

  1. 匿名
    2009/10/25 于 12:34:03

    这个我以前写过 是利用shorturl原理。。。。。。

    • littlehz
      2009/10/26 于 08:55:17

      是的,原理都差不多。不过这个补丁在shorturl基础上增加的:1、不仅仅接收请求的URI部分需要处理判断,页面输出的URL也要用正则匹配一次修改输出的URL。2、需要高效率实现,这个功能主要是对商业定制开发的做的,页面访问量都非常大。数据不仅存数据库中,还需要做查询缓存。3、安全问题,所有新增的变量都全部需要做处理,防止某些人从HOST部分入侵。4、获取内容不能用get_contents,因为要cookies作用,可以用require_once这样的。

  2. 匿名
    2009/10/25 于 12:34:37

    引用
    2009年10月25日 12:34:03
    这个我以前写过 是利用shorturl原理。。。。。。

    by landon@coshim

  3. 匿名
    2009/10/28 于 01:14:28

    博主,有个问题请教下
    全部按你的说明操作

    正常访问没问题,但是登陆,退出,总是返回到总论坛了,怎么处理

    比如访问http://bbs1.domain.com
    没问题
    但是登陆成功的时候,转跳到http://bbs1.domain.com/index.php
    就会自动返回到总论坛http://bbs.domain.com去了.如何处理?

  4. 匿名
    2009/10/28 于 01:24:37

    补充下,登陆我没有启用浮动弹出框

    • littlehz
      2009/10/28 于 14:52:20

      关于本插件的问题,请到论坛讨论

  5. 匿名
    2009/10/29 于 09:12:58

    好久不写php了 数据库都忘了

  6. 匿名
    2009/11/02 于 13:40:41

    很牛X的功能!!~~感谢@~~

  7. SunyAndyFen
    2009/11/05 于 08:58:36

    http://a.w.littz.com
    http://b.w.littz.com

    像这样自己定义的很多个这样的域名需要申请吗? 要付费吗?

发表评论

您的昵称 *

您的邮箱 * (绝对保密)

您的网站