修改论坛程序实现多域名访问SS/XS
我们知道由于SS/XS使用绝对路径(地址是完整的http://),所以只支持一个域名访问方式,如果使用多域名访问,哪怕IIS和Apache设置是正确的,也会导致只有一个域名能够完美访问,就是填写在config.php文件里的$siteurl的地址值,我当初安装SS/XS的时候将程序安装在根目录,论坛安装在其下的bbs子目录里,当时经SUP提醒,将$siteurl留空,$bbsurl填'/bbs',这样访问SS/XS是没有什么问题了,可以绑定多域名,访问也正常,但是论坛后台提示找不到SS/XS,没法设置,论坛的空间导读、个人空间点击后全回到论坛首页。为此曾写过一篇文章谈及修改论坛文件的,参见:
https://discuz.dismall.com/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 编辑 ] |