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

来源:互联网 发布:苍穹之恋坐骑进阶数据 编辑:程序博客网 时间:2024/05/17 05:10

因各种原因,原使用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 0
原创粉丝点击