2009-02-24

Dvbbs 转 Discuz! 后配置 301 重定向

9+

在 Discuz! 推出 UCenter Home 后,很多朋友都将论坛转为 Discuz! ,特别是 SNS 一度风靡的时候,Comsenz 这套成型的免费产品自然引起站长朋友们的极大兴趣。

我们公司也不例外,经过几天的测试,公司决定将 Dvbbs 转为 Discuz!7.0 ,一直以 ASP/ASP.NET 为技术核心的我们面对 PHP 这个‘怪物’,遇到问题多多,不过总算费心劳力地完成第一阶段的使命,后续将逐一回顾转换过程中遇到的问题和解决办法。

在 Dvbbs 转 Discuz! 后,为了保住论坛原有流量,为搜索引擎建立友好的收录环境,以及保护用户从收藏夹里的来访,将原论坛帖子全部永久重定向到新论坛相应主题是必要的。

由于要运行以前的很多 ASP/ASP.NET 程序,我的 PHP 环境建立在 IIS(Win2k3) 上。伪静态使用 ISAPI_Rewrite 完成,原论坛 301 重定向也是在 ISAPI_Rewrite 下配置的。

以下是针对 Dvbbs 301 到 Discuz! 的配置文件:

[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteRule /bbs/index\.asp /bbs/index\.php [I,RP]

RewriteRule /bbs/index\.asp\?(.*)boardid=([0-9]+)(.*) /bbs/forum-$2-1\.html [I,RP]

RewriteRule /bbs/dispbbs\.asp\?(.*)&ID=([0-9]+)(.*) /bbs/thread-$2-1-1\.html [I,RP]

RewriteRule /bbs/dispuser\.asp\?id=([0-9]+)(.*) /bbs/space-uid-$1\.html [I,RP]

RewriteRule /bbs/TopicOther\.asp\?(.*)&id=([0-9]+)(.*) /bbs/archiver/tid-$2\.html [I,RP]

RewriteRule /bbs/dv_rss\.asp\?(.*)&id=([0-9]+)(.*) /bbs/archiver/tid-$2\.html [I,RP]

RewriteRule /bbs/dv_rss\.asp\?(.*)boardid=([0-9]+)(.*) /bbs/archiver/fid-$2\.html [I,RP]

RewriteRule /bbs/dv_rss\.asp\?s=xml /bbs/rss.php [I,RP]

RewriteRule /bbs/dv_rss\.asp(.*) /bbs/archiver/ [I,RP]


公司使用的是 Dvbbs 7.1 sp1 SQL 版,在 Dvbbs8.2 上测试通过。主要实现原论坛主页、帖子、板块、无图版和 RSS 做了相应的处理。

另外,也可以使用通用规则来完成,如将规则中 /bbs/ 替换为 ^(.*)/ ,即:

RewriteRule ^(.*)/index\.asp\?(.*)boardid=([0-9]+)(.*) $1/forum-$2-1\.html [I,RP]

由于只是将论坛转换为 Discuz! ,域名和访问目录都没有发生变化,所以我用 /bbs/ 绝对根路径在严格匹配,如果变更了访问目录或域名,需要对规则作相应的修改,可以参考下面的模式处理:

# ISAPI_Rewrite 2.x

RewriteCond Host: ^www\.domain\.cn$

RewriteRule (.*) http\://www\.domain\.com$1 [I,RP]

# ISAPI_Rewrite 3.x

RewriteCond %{HTTP:Host} ^www.\domain\.cn$

RewriteRule (.*) http\://www\.domain\.com$1 [NC,R=301]


上面的规则可以将原域名 www.domain.cn 301 重定向到新域名 www.domain.com ,包括原域名下的所有文件访问,对于更换网站域名的时候可以使用这条规则实现整站重定向。

RewriteCond Host: ^www\.domain\.cn$ 表示其下的规则只对域名 www.domain.cn 下的访问起作用。在使用 ISAPI_Rewrite Lite 配置多站点规则时常常用到。

我的服务器 Rewrite 组件使用的是 isapi_rewrite full v2.7.046 0053 特别版,在站长网下载的,能成功注册,支持自定义 httpd.ini ,将 httpd.ini 放到自己网站的根目录就可以使用。

规则中 I 表示忽略大小写,RP 表示使用 301 转向,如果你使用的是 ISAPI_Rewrite 3 ,需要将上面代码中 [I,RP] 修改为 [NC,R=301] 。

配置完成后,可以观察 IIS 日志,C:\WINDOWS\system32\LogFiles\ 相应文件夹下,查看访问记录中是否显示为 301 。

也可以到下面的地址查看是否成功实现 301 Moved Permanently :HTTP Status Codes Checker

本文有 9 篇评论 ↓↓

  1. 沐风

    嗯,学习了,不知道重定向之后,搜索引擎会在多长的时间内把旧网站收录的内容转到新网站下面

  2. @沐风
    要看网站的权重了,蜘蛛来访的频率,访问得越热的文章转换得越快。
    另外,Google转得快,百度慢一些,

  3. 正需要。 另外博主你主题很漂亮