找回密码
 立即注册

QQ登录

只需一步,快速开始

教程经验总索引TVMW5/小日本5 索引【视频转换】小日本4/TE4XP 索引【视频转换】TAW4 / TDA3 索引【DVD打包软件】
Nero 索引DVD-Lab 索引【DVD打包软件】编解码器 索引 【必读】固顶帖011号
查看: 9740|回复: 2

[教程] 【原创】子目录301重定向到二级域名的PHP代码

[复制链接]

9333

威望

818

金钱

1万

贡献

管理员

自由的灵魂

积分
100458
主题
5590
回帖
26310
注册时间
2003-4-10
最后登录
2024-11-21
发表于 2010-5-4 02:36:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 IsaacZ 于 2010-8-6 21:25 编辑

研究了好几个小时,一点心得,分享给大家:


缘起:曾经使用过二级子目录 https://www.dianbo.org/bbs 来访问论坛,现在为这个子目录绑定了独立域名bbs.dianbo.org,打算全面更改为使用 http://bbs.dianbo.org 来访问。以下是修改方法:


常规页面的跳转:


在网站根目录新建一个 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"];   //获取问号后面的参数
if ($the_host !== 'bbs.dianbo.org')    //验证当前访问域名:若非引号内的域名,则进行如下跳转——
{
if ($querystring !== '')     //验证文件名后是否有参数,如果有参数则跳转到——
{
header('HTTP/1.1 301 Moved Permanently');   //发出301头部,表明永久重定向
header('Location: http://bbs.dianbo.org/'.$filename.'?'.$querystring);    //跳转到我的新域名地址【带参数】
}

elseif ($filename == 'index.php')   //如果是主页则直接跳转到新域名
{
  header('HTTP/1.1 301 Moved Permanently');  //发出301头部,表明永久重定向
  header('Location: http://bbs.dianbo.org/');   //跳转到我的新域名
}

else    //如果无参数则跳转到——
{
header('HTTP/1.1 301 Moved Permanently');    //发出301头部,表明永久重定向
header('Location: http://bbs.dianbo.org/'.$filename);    //跳转到我的新域名地址【不带参数】
}
}
?>

然后在每一个需要跳转的PHP页面的 <?php  下面加一行:

  1. include("301.inc.php"); //301重定向
复制代码


301.inc.php.gif

对于Discuz 7.2 论坛来说,通常需要跳转的是以下几个页面:

index.php
forumdisplay.php
viewthread.php
redirect.php
tag.php
logging.php
space.php

演示页面:

https://www.dianbo.org/bbs
https://www.dianbo.org/bbs/
https://www.dianbo.org/bbs/forumdisplay.php?fid=68
https://www.dianbo.org/bbs/forum.php?mod=viewthread&tid=9991
https://www.dianbo.org/bbs/forum.php?mod=viewthread&tid=9991
https://www.dianbo.org/bbs/redirect.php?tid=6019&goto=lastpost#lastpost
https://www.dianbo.org/bbs/misc.php?mod=tag&name=TE4XP



以上链接打开后,https://www.dianbo.org/bbs 部分都会自动变为 http://bbs.dianbo.org/



Discuz! 7.2 论坛 archiver 无图版页面的跳转:


纯文本格式的 archiver 因为是在一个单独的目录,所以跳转代码要单独写。方法如下

在论坛 /archiver/ 下新建一个 301.inc.archiver.php 文件,,写入以下代码(红色处换成自己的新域名):

<?php   
$the_host = $_SERVER['HTTP_HOST']; //取得当前访问域名
$url = $_SERVER['PHP_SELF'];  //获取域名后的字串,如:/archiver/?fid-48.html  尽管写作 /?fid-48.html ,实际上相当于 /index.php?fid-48.html  
$filename= substr( $url , strrpos($url , '/')+1 );   //提取当前文件名,也就是 index.php
$querystring = $_SERVER["QUERY_STRING"];   //获取问号后面的参数
if ($the_host !== 'bbs.dianbo.org')    //验证当前访问域名:若非引号内的域名则进行如下跳转——>>
{
if ($querystring !== '')   //验证文件名后是否有参数,如果有参数则跳转到——
{
  header('HTTP/1.1 301 Moved Permanently');   //发出301头部,表明永久重定向
  header('Location: http://bbs.dianbo.org/archiver/'.'?'.$querystring);   //跳转到我的新域名地址【带参数】
}
  else   //如果无参数则跳转到——
{
  header('HTTP/1.1 301 Moved Permanently');   //发出301头部,表明永久重定向
  header('Location: http://bbs.dianbo.org/archiver/');    //跳转到我的新域名地址【不带参数】
}
}
?>

然后在 /archiver/index.php 页面的 <?php  下面加一行:

  1. include("301.inc.archiver.php");   //301重定向
复制代码


演示页面:
https://www.dianbo.org/bbs/archiver
https://www.dianbo.org/bbs/archiver/
https://www.dianbo.org/bbs/archiver/?fid-48.html
https://www.dianbo.org/bbs/archiver/?tid-5242.html

以上链接打开后,https://www.dianbo.org/bbs 部分都会自动变为 http://bbs.dianbo.org/
IsaacZ的发言中如果提到任何字母缩写或专有名词,在本论坛中一般都能搜索到。点此立即搜索点拨论坛。如有搜索不到的,请尝试搜索百度百科,或者跟帖提问。
发帖前请注意看置顶帖。如果你发现自己的问题没有得到回答,说明你的问题提错了地方或者提问前未先阅读版规。

0

威望

13

金钱

0

贡献

新手上路

积分
13
主题
0
回帖
2
注册时间
2010-5-12
最后登录
2010-5-12
发表于 2010-5-12 01:27:21 | 显示全部楼层
我总算找到解决办法了,谢谢

请问这样做 对网站SEO有影响么?

我使用的是wordpress,编辑根目录下的index文件没有效果,然后我编辑主题目录的index.php然后生效了,
这样对SEO没影响吧!

谢谢
回复

使用道具 举报

9333

威望

818

金钱

1万

贡献

管理员

自由的灵魂

积分
100458
主题
5590
回帖
26310
注册时间
2003-4-10
最后登录
2024-11-21
 楼主| 发表于 2010-5-12 01:46:38 | 显示全部楼层
本帖最后由 IsaacZ 于 2010-8-6 21:55 编辑

对SEO只有好处,便于集中流量到一个主域名,同时避免出现多个网址内容相同。

根目录下也是可以的,测试:http://www.isaacz.com


不过如果是根目录,代码可以简单些:

<?php
$the_host = $_SERVER['HTTP_HOST'];  //取得当前访问域名
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';  //获取域名后的字串,如:/index.php
if ($the_host !== 'www.dianbo.org')     //验证当前访问域名:若非引号内的域名,则进行如下跳转
{
if ($request_uri == "index.php")  //如果是主页则直接跳转到新域名
{
    header('HTTP/1.1 301 Moved Permanently');  //发出301头部,表明永久重定向
    header('Location: http://www.dianbo.org');    //跳转到我的新域名地址
}
else                                        //如果非主页则跳转到带文件名的地址
{
  header('HTTP/1.1 301 Moved Permanently');  //发出301头部,表明永久重定向
  header('Location: http://www.dianbo.org'.$request_uri);    //跳转到我的新域名地址
}
}
?>
IsaacZ的发言中如果提到任何字母缩写或专有名词,在本论坛中一般都能搜索到。点此立即搜索点拨论坛。如有搜索不到的,请尝试搜索百度百科,或者跟帖提问。
发帖前请注意看置顶帖。如果你发现自己的问题没有得到回答,说明你的问题提错了地方或者提问前未先阅读版规。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|点拨论坛 |网站地图

GMT+8, 2024-11-21 23:48 , Processed in 0.443588 second(s), 15 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表