立即免费下载 Discuz!6.1.0正式版
Discuz! 6.1.0 使用说明
Discuz!NT升级至v2.1
开放源码下载
UCenter Home 1.2 正式版发布
官方站 | 帮助文档
基于ECShop的免费网店托管-卖否
PHP实战精英班培训 | LAMP培训大连
Discuz!收费服务内容及价格
论坛免费升级 手握手
Discuz!/ECShop 专用官方虚拟主机
注册付费广告征集
Comsenz 招聘信息
网店系统ECShop v2.6.0正式版火热发布
基于Discuz!的免费论坛空间5D6D
第二届PHP中国开源发展及人才状况调查
 11 12
发新话题
打印

修改论坛程序实现多域名访问SS/XS

修改论坛程序实现多域名访问SS/XS

修改论坛程序实现多域名访问SS/XS
我们知道由于SS/XS使用绝对路径(地址是完整的http://),所以只支持一个域名访问方式,如果使用多域名访问,哪怕IIS和Apache设置是正确的,也会导致只有一个域名能够完美访问,就是填写在config.php文件里的$siteurl的地址值,我当初安装SS/XS的时候将程序安装在根目录,论坛安装在其下的bbs子目录里,当时经SUP提醒,将$siteurl留空,$bbsurl填'/bbs',这样访问SS/XS是没有什么问题了,可以绑定多域名,访问也正常,但是论坛后台提示找不到SS/XS,没法设置,论坛的空间导读、个人空间点击后全回到论坛首页。为此曾写过一篇文章谈及修改论坛文件的,参见:
http://www.discuz.net/viewthread.php?tid=581908
目前论坛已经升级到6.0.0正式版,我也升级论坛了,与原来相比,需要修改的文件比较多,修改方法也不尽相同,所以有志修改程序达到多域名访问的不妨阅读一下此篇文章。

特别提醒:安装结构为   SSXS安装在根目录,论坛安装在bbs子目录(这个目录名称可以不同,不影响,只要相应修改config.php里的$bbsurl就可以了),不是这种安装结构的修改方法不支持,勿谓言之不予,切切。

首先填写config.php文件时,$siteurl='',$bbsurl='/bbs'(如果不是bbs请填写正确的目录名称),访问方式为http://www.ss/xs.com(ss/xs页面)和http://www.ss/xs.com/bbs(论坛页面) [这个只是一个举例的地址,不是实际地址,请注意]

SS/XS就配置好了,你可以试试绑定多个域名访问,没有问题,页面是完整的。

下面就是论坛文件的修改,注意论坛是6.0.0正式版的,其他版本参见上面给出的链接。

1、首先要让论坛后台承认你安装了SS/XS,打开论坛admin目录下的supesute.inc.php文件,找到:
复制内容到剪贴板
代码:
if(!$settings['supe_siteurl']) {
修改为:
复制内容到剪贴板
代码:
if(!$settings['supe_status']) {
到论坛后台看看,扩展设置--supe参数设置出来了。

2、论坛首页ss/xs地址点击后回到首页,点击个人空间也不对,这个需要修改template\default目录(我使用默认风格,如果其他风格要修改同一文件)下的discuz.htm文件。
打开文件,搜索$supe[siteurl],注意,这里的修改分两种情况,如果只是单一出现的,将它修改为 / ,如果是地址前面的,删除就可以了,例如:
引用:
<!--{if $supe['status']}--><a href="$supe[siteurl]" target="_blank">$supe['sitename']</a> - <!--{/if}-->
修改为:
引用:
<!--{if $supe['status']}--><a href="/" target="_blank">$supe['sitename']</a> - <!--{/if}-->
而类似:
引用:
<a href="$supe[siteurl]/?uid/$discuz_uid" target="_blank">{lang space}</a>
这样的修改为:
引用:
<a href="/?uid/$discuz_uid" target="_blank">{lang space}</a>
就可以了,文件需要修改的地方六处。
3、修改同目录下的jsmenu.htm文件,搜索$supe[siteurl],删除就可以了,有两处。
4、修改论坛根目录下的blog.php文件找到:
复制内容到剪贴板
代码:
if($supe['status'] && $member['xspacestatus']) {
        dheader("location: $supe[siteurl]?uid/$uid");
修改为:
复制内容到剪贴板
代码:
if($supe['status'] && $member['xspacestatus']) {
        dheader("location: /?uid/$uid");
5、修改根目录下的space.php文件,找到:
复制内容到剪贴板
代码:
if($spacestatus && $supe['status'] && $member['xspacestatus']) {
        dheader("location: $supe[siteurl]?uid/$uid");
改为:
复制内容到剪贴板
代码:
if($spacestatus && $supe['status'] && $member['xspacestatus']) {
        dheader("location: /?uid/$uid");
6、修改根目录下的viewthread.php文件,找到:
引用:
$navigation = '» <a href="'.($iscircle && empty($frombbs) ? $supe['siteurl'].'?action_mygroup_gid_'.$thread['sgid'].'_op_list_type_bbs_fid_'.$fid : 'forumdisplay.php?fid='.$fid.($extra ? '&'.preg_replace("/^(&)*/", '', $extra) : '')).'">'.$forum['name'].'</a> » '.$thread['subject'];

$navtitle = $thread['subject'].' - '.strip_tags($forum['name']);
if($forum['type'] == 'sub') {
        $query = $db->query("SELECT fid, name FROM {$tablepre}forums WHERE fid='$forum[fup]'");
        $fup = $db->fetch_array($query);
        $navigation = '» <a href="'.($iscircle ? $supe['siteurl'].'?action_mygroup_gid_'.$thread['sgid'].'_op_list_type_bbs_fid_'.$fup[fid] : 'forumdisplay.php?fid='.$fup[fid]).'">'.$fup[name].'</a> '.$navigation;
        $navtitle = $navtitle.' - '.strip_tags($fup['name']);
}
修改为:
引用:
$navigation = '» <a href="'.($iscircle && empty($frombbs) ? '?action_mygroup_gid_'.$thread['sgid'].'_op_list_type_bbs_fid_'.$fid : 'forumdisplay.php?fid='.$fid.($extra ? '&'.preg_replace("/^(&)*/", '', $extra) : '')).'">'.$forum['name'].'</a> » '.$thread['subject'];

$navtitle = $thread['subject'].' - '.strip_tags($forum['name']);
if($forum['type'] == 'sub') {
        $query = $db->query("SELECT fid, name FROM {$tablepre}forums WHERE fid='$forum[fup]'");
        $fup = $db->fetch_array($query);
        $navigation = '» <a href="'.($iscircle ? '?action_mygroup_gid_'.$thread['sgid'].'_op_list_type_bbs_fid_'.$fup[fid] : 'forumdisplay.php?fid='.$fup[fid]).'">'.$fup[name].'</a> '.$navigation;
        $navtitle = $navtitle.' - '.strip_tags($fup['name']);
}
现在论坛首页和帖子内容页面除了热点导读里的链接不对之外,其他的都基本没有问题了,下面就解决这个。

7、修改论坛include目录下的cache.func.php文件,找到:
引用:
while($item = $supe['db']->fetch_array($query)) {
                                        $typename = $language['supe_'.$item['type']];
                                        $items[] = '<em>[<a href="'.$supe['siteurl'].'?action/'.$item['type'].'" target="_blank">'.$typename.'</a>]</em> <cite><a href="'.$supe['siteurl'].'?uid/'.$item['uid'].'" target="_blank">'.addcslashes(addslashes($item['username']), '\\\'').'</a></cite>: <a href="'.$supe['siteurl'].'?action/viewspace/itemid/'.$item['itemid'].'.html" target="_blank">'.addcslashes(addslashes(cutstr($item['subject'], 35)), '\\\'').'</a>';
                                }
修改为:
引用:
        while($item = $supe['db']->fetch_array($query)) {
                                        $typename = $language['supe_'.$item['type']];
                                        $items[] = '<em>[<a href="/?action/'.$item['type'].'" target="_blank">'.$typename.'</a>]</em> <cite><a href="/?uid/'.$item['uid'].'" target="_blank">'.addcslashes(addslashes($item['username']), '\\\'').'</a></cite>: <a href="/action/viewspace/itemid/'.$item['itemid'].'.html" target="_blank">'.addcslashes(addslashes(cutstr($item['subject'], 35)), '\\\'').'</a>';
                                }
现在看看热点导读里的链接已经正确了。
到这里修改就告一个段落了,现在可以看看多个地址的访问结果了,应该是没有问题的,使用双线空间的不妨试试。

    最后的提醒,不要贪心不足,将论坛也绑定一个二级域名,这样的做法我没有测试过,估计比较成问题,能达到多域名正常访问SS/XS已经可以了吧。
    还有一点要注意的,就是使用一个域名登陆后,在其他的域名上反映是没有登陆的,但是同域名的论坛是同步的。
    发表带图片的日志最好不要使用插入文章的做法,否则在一个域名上能看到的图片在其他域名上是不能看的,不插入就可以,有人说使用Firefox浏览器就可以,但是本人没有测试过,留给有心人测试一下吧。最后看看结果,注意地址栏里的地址:

   域名地址1结果.gif (36.83 KB)

2007-9-7 16:34

   域名地址2的结果.gif (31.08 KB)

2007-9-7 16:34

演示站点:http://sq.hcclib.net

[ 本帖最后由 antdk 于 2007-9-8 14:54 编辑 ]
支持一个先....
这么麻烦哪,还是算了
不过支持LZ先
支持一个~~~~~~
天下風雲出我輩, 一入江湖歲月催. 皇圖霸業談笑中, 不勝人生一場醉
谢谢经验分享!
这个支持二级域名泛解析不?

我开始只是简单的在config.php里配置,SS用空"",BBS用"/bbs",就是二级解析用不对,返回首页总会出现一些错误,后来多域名也只能用一个域名了!
前排啊,
SS一定要是跟目录吗?
如果好用的话,绝对是好东西哦
学习再学习,再次感谢楼主分享.
 11 12
发新话题
版块跳转