0
点赞
收藏
分享

微信扫一扫

DiscuzX3.n系列域名转向问题的解决


因各种原因,原使用​​http://bbs.lgms.net​​​域名需转向到​​http://www.szlgcn.com​​域名。

我写了一个301.inc.php的包含文件,目的是让有需要引用的论坛程序文件在需要时引用。

301.inc.php文件的内容:

<?php
$the_host = $_SERVER['HTTP_HOST']; //取得当前访问域名

$url = $_SERVER['PHP_SELF']; //获取域名后的字串,如:/bbs/index.php

$filename= substr( $url , strrpos($url , '/')+1 ); //提取当前文件名

$querystring = $_SERVER['QUERY_STRING']; //获取问号后面的参数

//echo ' location='.$the_host.'/'.$filename.'?'.$querystring; //测试之用,看看取得的链接

if ($the_host !== 'www.szlgcn.com') //验证当前访问域名(就是你的新域名):若非引号内的域名,则进行如下跳转——

{

if ($querystring !== '') //验证文件名后是否有参数,如果有参数则跳转到——

{

echo '<script language="javascript">';

echo ' location="http://www.szlgcn.com/'.$filename.'?'.$querystring.'"';

echo '</script>';

}

elseif ($filename == 'index.php') //如果是主页则直接跳转到新域名

{

echo '<script language="javascript">';

echo ' location="http://www.szlgcn.com/"';

echo '</script>';

}

else //如果无参数则跳转到——

{

echo '<script language="javascript">';

echo ' location="http://www.szlgcn.com/'.$filename.'"';

echo '</script>';

}

}

?>

在可能涉及转向的程序文件中引用,比如:forum.php,引用方式是在"<?php"的下面插入第二行:

include('301.inc.php'); 

结果类似这样:

<?php
include('301.inc.php'); //301重定向//后面为您的其他代码
?>


OK.

备注:上述“涉及转向的程序文件”在DZ X3.n版本中可能有:

search.php,portal.php,home.php,group.php等。比如:​​http://bbs.lgms.net/forum.php?mod=viewthread&tid=16787 ​​

注:如想修改plugin.php,index.php, member.php等则还需要对相关程序做微调,在此不细说。


以上解决方案显得较为复杂,还可能出现预想不到的问题,比如:图片上传时可能不显示等。

有没有更好的解决方案呢?有!

那就是使用Apache配置文件,利用IfModule mod_rewrite.c配置节进行域名转向。

1、使用ps -aux查看所有进程并找到WEB服务所在的目录。

2、在Apache所在的目录找到httpd.conf文件。

3、对httpd.conf进行修改:

(1)保证LoadModule rewrite_module modules/mod_rewrite.so有效(如前面有#,去掉#);

(2)修改ServerName localhost:80,ServerAdmin yourQQNo@qq.com(选做);

(3)修改网站所在目录的Options FollowSymLinks后的AllowOverride为All(一般情况下为None)。

(4)增加<IfModule mod_rewrite.c>节,内容为:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^​​​bbs.lgms.net​​​ [NC]
RewriteRule ^(.*)$ ​​​http://www.szlgcn.com​​​/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^​​​s.lgms.net ​​​[NC]
RewriteRule ^(.*)$ ​​​http://www.szlgcn.com​​​/$1 [R=301,L]
</IfModule>

注:请在相关位置换成你自己的域名或转向替换网址。

4、修改完成后,重启Apache。命令为:service httpd restart。

OK。测试正常,说明已成功。

举报

相关推荐

0 条评论