本站基于Dotclear搭建运行已经有三年多了,这三年Dotclear一直工作非常的漂亮,可是最近我一直很忙,没有时间打理她,Dotclear的一个致命的问题就出现了,那就是垃圾回复的泛滥,一开始我写了一个根据关键字自动过滤Spam的东东,可是我严重低估了垃圾的泛滥程度,过滤关键字越来越多,到最后实在受不了,索性定期删除回复,清静是清静了,就是正常的回复也没有了,而一个网站,良好的访问交流是必不可少的,在这样的情况下,我就想到从Dotclear迁移到Wordpress了。
我的目标是,在迁移到Wordpress后,用户访问可以无缝的迁移,原来的Dotclear的访问URL同样能够访问到Wordpress上的对应文章,这样就不会因为更换的后台而引起整个站点的访问丢失。目标看是简单,其实迁移的过程碰到挺多问题的,以下是迁移的过程简记,希望对其他需要迁移的朋友有所帮助。
说明一下程序版本:
- Dotclear:1.2.6
- Wordpress:2.6-beta2
一、Dotclear数据导入到Wordpress
Wordpress官方直接支持将Dotclear的数据导入,但是这里面有几个要注意的问题:
1、Wordpress的dotclear数据导入,其中的编码转换是有问题的,非UTF-8的编码转换后会出现乱码。而很不幸的,Dotclear的数据编码是Latin1,解决的方式是先将Dotclear的数据转换成UTF-8,然后再导入到Wordpress,具体方法如下:
首先创建一个临时数据库,该数据库的缺省编码是UTF-8:
CREATE DATABASE IF NOT EXISTS dt_tmp DEFAULT CHARACTER SET utf8;
然后将原来Dotclear dump出来:
mysqldump --opt --quote-names dotclear > dotclear.sql
然后将导出的数据转换为UTF-8:
iconv -f ISO_8859-1 -t UTF-8 dotclear.sql > dotclear.sql
同时修改Dotclear表结构,将各字段编码设置为UTF-8:
sed -i 's/latin1_bin/utf8_general_ci/g' dotclear.sql sed -i 's/latin1/utf8/g' dotclear.sql
然后将转换后的数据导入到临时数据库里面:
mysql dt_tmp <dotclear.mysql
这样我们在Wordpress就直接从dt_tmp数据库导入dotclear数据就可以了,注意这时候的编码是UTF-8。
2、考虑到迁移后,原来内容的无缝访问,导入到Wordpress的文章的id需要和原来在dotclear的id一致,只有这样后续我们才有可能实现无缝迁移,我的办法是重复插入Post,然后再删除,以保持post_id一致。
3、官方的导入程序,不支持导入Dotclear里面的Tags,所以我也修改了下,加入导入Tags的功能。以上两个修改后导入程序可以从这里下载。下载后直接解压到$wordpress/wp-admin/import目录即可。
二、URL从定向。
1、我们可以利用Apache ReWrite将原来Dotclear的URL ReWrite为Wordpress的URL。
Dotclear的URL如下:/index.php/2008/02/16/447-flexpyamfdjango,其中447为post_id
Wordpress的URL我设置的如下:/2008/06/11/465/,其中465为post_id
因为我们前面在导入数据的时候已经将dotclear和wordpress里面的post_id一致了,所以我们只需要将-后面的部分截取掉就可以通过原来的url访问到新的文章了,下面是对应的.htaccess内容:
# BEGIN Dotclear URI To Wordpress URI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)-.*$ /$1/ [R,L]
</IfModule>
# END Dotclear URI To Wordpress URI
将以上内容添加到$wordpress/.htaccess的顶部。
2、另外Dotclear的Rss访问地址的重定向。
dotclear的rss访问地址是:/rss.php,这里我偷了个懒,直接在新建了一个rss.php,然后在里面做个重定向调用wordpress的rss feed地址,该文件内容如下:
<?php
header('Location: /feed/' ) ;
?>
通过以上操作,我们的dotclear的网站基本实现无缝迁移到wordpress,说来简单,因为PHP已经荒废了很久,可我也折腾了将近两天,不过还好给折腾出来了。
8 Comments at "Dotclear向Wordpress迁移攻略"
难怪个把月没更新了.
呵呵,这样也行,厉害.
为什么你的WP里 < 和 引号之类的字符都正常呢?
我的那个引号会自动转成全角的,很郁闷.
你是不是录入的有问题,我这里一直都是正常的!
不知道是否了解Z-BLOG转移到WP呢>
一直想换了
Z-BLOG没有用过,不过你可以类似dotclear的转换,其实一般blog程序也就是几个表post,comment什么的,转换并不难啊
挺好,导入的很干净
哦…可能WP的版本不一样吧…
z-Blog的转换可以看这里:http://wordpress.org.cn/thread-13142-1-1.html
好久没上来顶了,网页都更新了。
Comment Now!