找回密码
 注册
查看: 2075|回复: 0
收起左侧

Discuz 301重定向 静态文件修改

[复制链接]

5314

主题

8320

帖子

1万

积分

管理员

出售国内外虚拟空间

Rank: 10Rank: 10Rank: 10

积分
14665
帖子
8320
精华
67
体力
14665 点
蓝豆
2391 点
注册时间
2007-6-8

终身成就奖LY官方团队会员身份ID卡

发表于 2009-10-19 01:20:12 | 显示全部楼层 |阅读模式
Discuz!虽然可以利用伪静态实现301重定向,但是有些虚拟主机并不支持。这时,我们可以变通一下,使用PHP代码来实现301重定向。 论坛上有使用PHP实现Discuz!的301重定向的方法,但是不兼容伪静态。因为伪静态的URL经过服务器的解析之后,全部变为真实的URL,即动态URL。那么应该如何兼容伪静态呢?其实原理很简单,只需将获取到的动态URL重新转换为伪静态URL,然后再跳转。 以下是使用PHP实现Discuz!的301重定向的方法。该方法支持伪静态,你可能需要进行适当修改以符合你的伪静态规则。另外,该方法有一定难度,超级菜鸟谢绝使用,本人不负责解答任何疑问。 打开include/common.inc.php文件,找到:
  1. !defined(CURSCRIPT) && define(CURSCRIPT, );
复制代码
在后面添加:
  1. require_once DISCUZ_ROOT../include/301.php;
复制代码
打开archiver/index.php文件,找到:
  1. define(CURSCRIPT, archiver);
复制代码
在后面添加:
  1. require_once DISCUZ_ROOT../include/301.php;
复制代码
新建301.php文件,将下列代码保存至301.php文件,注意编码,保存到include目录下。
  1. <?php
  2. $Is301 = 0;//301开关
  3. if ($Is301==0){
  4. $GetDomain = strtolower("http://".$_SERVER[SERVER_NAME]); //获取当前域名
  5. $NewDomain = "http://bbs.njuster.com"; //转发至新的域名
  6. function NewUri(){
  7. $StrUri = strtolower($_SERVER[REQUEST_URI]);//将获取的动态URL转换为小写
  8. $StrUri = str_replace("/bbs/","/",$StrUri); //替换"/bbs/"为"/"
  9. $StrUri = preg_replace("~(.*)/forumdisplay\\.php\\?fid\\=(\\d+)\\&page\\=(\\d+)\\&~", "$1/forum-$2-$3.html", $StrUri);
  10. $StrUri = preg_replace("~(.*)/viewthread\\.php\\?tid\\=(\\d+)\\&extra\\=page\\%3d(\\d+)\\&page\\=(\\d+)\\&(\\d+)~", "$1/thread-$2-$4-$5.html", $StrUri);
  11. $StrUri = preg_replace("~(.*)/space\\.php\\?(uid|username)\\=(.*)\\&~", "$1/space-$2-$3.html", $StrUri);
  12. $StrUri = preg_replace("~(.*)/tag\\.php\\?name\\=([^&]+?)\\&~", "$1/tag-$2.html", $StrUri);
  13. $StrUri = preg_replace("~(.*)/index\\.php\\?gid=(\\d+)~", "$1/index-gid-$2.html", $StrUri);
  14. $StrUri = preg_replace("~(.*)/index\\.php~", "$1", $StrUri);
  15. $StrUri = preg_replace("~(.*)/archiver/index.php\\?(fid|tid)-(\\d+)(.*)\\.html\\&~", "$1/archiver/$2-$3$4.html", $StrUri);
  16. return $StrUri;
  17. }
  18. if($GetDomain !=$NewDomain){
  19. Header("HTTP/1.1 301 Moved Permanently");
  20. Header("Location: ". $NewDomain.NewUri());
  21. exit();
  22. }
  23. }
  24. ?>
复制代码
出售国内或美国高性能虚拟空间,高速VPS以及服务器! 同时承接各种类型的网站制作,网站维护,支付宝交易安全放心!    联系QQ:6102031
懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

网站公告上一条 /2 下一条

GMT+8, 2024-5-19 22:08 , Processed in 0.093750 second(s), 24 queries , Gzip On.

© 2006-2022 Powered by Discuz! X3.4

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