因各种原因,原使用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。测试正常,说明已成功。