从Z-blog到WordPress的完美数据转换

纠结了很久,游魂坚守z-blog的心终于动摇了,于是投靠了WordPress,下面游魂就讲一下怎么样完美的从z-blog转换到WordPress。

一、数据导出导入

首先是把数据从z-blog中导出,游魂第一次用的是月光博客提供的那个MovableType插件,但是该插件导出的数据中Tag是连在一起的,就是如果你的文章有很多Tag的话,该插件会将这些Tag合并成一个,这就给后续带来了十分巨大的工作量,所以游魂找到了鸟儿童鞋对MovableType插件的修改版,这个修改版可以完美导出Tag(下载地址:Dbank)。导出后你就可以将数据导入到你新安装的WordPress中了,然后数据导入工作结束。

二、301转向

为什么要用301转向游魂就不再说明了,作用你懂的。

需要做转向的地址游魂分了六大类:文章,分类,标签,翻页,文章归档,其他页面。301转向数量少的可以用Redirections插件一条一条的写,但是多了就不好办了。

1.文章

游魂之前的博客删除了不少文章,于是ID不连续,并且游魂以前的日志地址是 https://www.youhun.org/分类别名/文章ID/ 的形式,基本上写通用型的301转向是不太可能了,单是400多篇文章也不能一条一条的去写规则啊,于是游魂想到了sitemap文件,这个文件记录的只有文章地址和日期等数据,并且刚好是按照时间顺排列的,将游魂博客的z-blog中的sitemap文件中的地址数据复制出来,然后用EmEditor这个文本编辑器用一些简单的正则表达式把时间等数据都去除掉,然后放进Excel表格中,然后再用同样的方法处理游魂博客的WordPress版的sitemap文件,于是一个前边是老地址,后边对应新地址的表格就做好了,然后将数据复制到文本文件中,你就会发现每一行的前边是老地址,后边是新地址,然后将数据批量替换成下边这种新式

Redirect 301 /impression/421/ https://www.youhun.org/404.html

这就是一条301转向规则了,用批量替换就能将400多篇文章都生产301规则,如下图所示

从z-blog到WordPress的完美数据转换

2.标签

当年游魂为了长尾流量,每篇文章就死命的使用大量长尾标签,于是400多篇文章,将近700的标签,于是就想给标签写一个通用的规则,可是z-blog的标签地址太诡异了,空格是” + “,地址还分大小写,而Linux主机是区分大小写的,并且WP会自动把空格转化成” – “,于是通用规则又泡汤了,但是一条一条的写也是不可能的,于是还是选择用文本编辑器批量修改。

在z-blog的tags页面把所有的Tag的地址都复制到文本中,至于怎么去掉其他的数据自己想办法,总之要保证一行一个。WP没有独立的Tag页面,所以我们用z-blog导出的数据就行了,但是需要改一下地址。z-blog中标签地址有如下三种:

1)带空格的,例如标签Adsense for Feeds的地址是 https://www.youhun.org/catalog.asp?tags=Adsense+for+Feeds

2)包含中文的,例如标签110米栏的地址是 https://www.youhun.org/catalog.asp?tags=110%e7%b1%b3%e6%a0%8f

3)纯数字或者英文的,例如标签123地址是 https://www.youhun.org/catalog.asp?tags=123

对于第一种需要先将“+”地换成“-”,然后再将 https://www.youhun.org/catalog.asp?tags= 替换成 https://www.youhun.org/tag/

对于后边两种直接将 https://www.youhun.org/catalog.asp?tags= 替换成 https://www.youhun.org/tag/

然后将z-blog所有标签和WP所有的标签用Excel表格做成前后对应的表格,然后再复制到文本中作为备用。

这时301规则就和前边文章的规则不太一样了,前边用到的是“Redirect 301”,但是这个规则对于动态页的转向似乎没用,于是游魂找到了Redirection插件,先将以上三个Tags填写到Redirection插件中,然后在Redirection插件–模块–WordPress–Apache中导出.htaccess,查看一下这个.htaccess,基本上就明白怎么做了

这时我们使用的是RewriteRule规则,于是一些符号都需要做转义处理了:

批量将 % 替换成 %25

批量将 + 替换成 %2B

批量将 ? 替换成 %3F

批量将 = 替换成 %3D

批量将 + 替换成 %2B

标签Adsense for Feeds的301规则:RewriteRule ^catalog\.asp%3Ftags%3DAdsense%2Bfor%2BFeeds$ https://www.youhun.org/tag/adsense-for-feeds [R=301,L]

标签123的301规则:RewriteRule ^catalog\.asp%3Ftags%3D123$ https://www.youhun.org/tag/123 [R=301,L]

标签ADSL快速换IP地址的301规则:RewriteRule ^catalog\.asp%3Ftags%3DADSL%25e5%25bf%25ab%25e9%2580%259f%25e6%258d%25a2ip%25e5%259c%25b0%25e5%259d%2580$ https://www.youhun.org/tag/adsl%25e5%25bf%25ab%25e9%2580%259f%25e6%258d%25a2ip%25e5%259c%25b0%25e5%259d%2580 [R=301,L]

批量写好这个之后,可以导入到Redirection插件中。

3、分类 翻页 文章归档

分类翻页文章归档都比较少,直接在Redirections插件中填上老地址和新地址,自己一条一条的写就行了

4、其他页面

游魂的z-blog除了上述页面之外,还有关于页面,留言页面,Tags页面,在WP的页面选项中新这些页面,然后在Redirection插件中填上新老地址,即可做301转向

其中关于和留言都简单,但是Tags页面需要自己添加一个模板,这样才能生成Tags页面,方法如下:

1)将所用模板目录下的page.php模板用ftp下载回来,然后改名为tags.php
2)将tags.php模板用编辑器打开,在头部添加如下代码

<?php
/*
Template Name: Tags
*/
?>

3)在tags.php模板中找到<?php the_content(); ?>,替换为下边三种形式的任意一种

<center><h2>统一字体大小</h2></center><?php wp_tag_cloud(‘smallest=1.2&largest=1.2&unit=em&number=0&orderby=count’); ?>

<center><h2>默认</h2></center><?php wp_tag_cloud(‘number=0&orderby=count’); ?>

<center><h2>随机</h2></center><?php wp_tag_cloud(‘number=0&order=rand’); ?>

4)上传tags.php模板,然后新建tags页面,内容为空,选择Tags模板即可

三、保持页面Title一致

当你改动页面标题的时候,百度会对你的网站有一定的权重降低,所以从z-blog转到WP的时候一定要保证大部分页面标题和原来一致,总的来说就是首页、分类页、文章页和Tag页。

但是如果你在使用z-blog的时候没有调用tag加入文章页的Title中,那么All in one seo之类的插件完全能满足你的需求,但是游魂在使用z-blog的时候,将tag加入了文章页的title中,于是游魂就犯难了,现有的插件都搞不定这个,当游魂准备放弃的时候,hzlzh童鞋出现了(目前使用模板的作者),于是游魂得救了,他说在页面之外调用Tag比较麻烦,但是能做,于是第二天游魂就拿到代码了,代码如下,游魂也没搞明白,只管用了

<title><?php
// Logic of printing the <title> tag
global $page, $paged;
echo trim(wp_title( ”, false, ‘right’ ));
global $post;

$post_tags = wp_get_post_tags($post->ID);
$numItems = count($post_tags);
$i = 0;
if (is_singular()){
//print_r($post_tags);
foreach ($post_tags as $post_tag) {
if($i == 0){
echo ‘-‘.$post_tag->name;
}
elseif ($i+1 == $numItems){
echo ‘,’.$post_tag->name;
}
else{
echo ‘,’.$post_tag->name;
}
$i++;
}

$post_cates = wp_get_post_categories($post->ID);
$cats = array();

foreach ($post_cates as $c) {
$cat = get_category( $c,false);
echo ‘-‘.$cat->name;
}
}
if ( !is_home() ) echo “-“;
bloginfo( ‘name’ );

// Paged format
if ( $paged >= 2 || $page >= 2 )
echo ‘ – ‘ . sprintf( __( ‘Page %s’, ‘dot-b’ ), max( $paged, $page ) );
?></title>

哪位童鞋在搜索 WordPress 文章页 title 调用Tag之类的关键词的话,应该有所帮助

总结

从z-blog转到wordpress不难,难的是不去做,遇到问题不去搜索,不要老想着自己能解决一些,是在不行就求助高手。

PS:坚守z-blog快4年了,终于没有挡住WordPress的诱惑。基本上所有从Z-blog到WordPress的数据转换的问题都解决了,以后就开始我的WordPress之旅了。

“从Z-blog到WordPress的完美数据转换”的7个回复

  1. 欢迎来到wordpress :mrgreen:

    其实相比起来,我现在推荐wordpress,理由很简单,不管是虚拟主机、还是vps都很好找,而且,wordpress功能强大,但不复杂,容易上手。

  2. 老兄的教程非常不错,我刚从zb转到wp上,最头疼的是ID不连续,不过做为个人日志的小站,不想再去301了,只是自己看看,不过学习了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You must enable javascript to see captcha here!