今天非常成功的将BO-BLOG转换成WordPress我很早就想转成WordPress但是我看了周围的一些博友转换的并不是很成功 多多少少都有数据丢失我这次从BO-BLOG转换成WordPress可以是非常的成功。
BO-BLOG转换成WordPress程序2010下载地址http://u. 115.com/file/f47f52f18f
但是我服务器的php不是最新版本所以wordpress不能更新到最新版。郁闷。 bo-blog towordpress转换的后续问题由于我的网赚日记已经被搜索引擎收录了一些文章 目前的流量也大多数靠搜索引擎而转换之后肯定会对收录有很大的影响所以做好后续工作是十分必要的否则一旦被K不知道什么时候才能回得来。解决收录问题最好的办法是做301转向我在网上找了两种方法一种是编写php代码一种则是使用.htaccess节选如下以备后用 .htaccess法1、更换博客主目录从原来Bo-Blog的www.ZFreet.com/blog/换到了现在的www.ZFreet.com/根目录这点对SEO的影响其实不大。 2、 Bo-Blog的别名URL结构当我自定义了 日志链接的别名时 Bo-Blog 的 URL 结构是这样的www.ZFreet.com/blog/post/XXX.php 我现在的 WordPress 用的别名 URL 结构为www.ZFreet.com/post/XXX.html尽可能的我不改动别名XXX部分但是Bo-Blog的URL要区分大小写而WordPress不分搜索引擎也是会区别大小写的。 3、 Bo-Blog的伪静态默认URL结构如果没有定义链接别名 Bo-Blog默认的URL结构是这样的www.ZFreet.com/blog/post/read.php/ID.htm以ID号自动生成htm文件现在的WordPress每篇日志都有别名不存在ID号的情况。但是要让原来的ID号自动对应到现在的别名URL是几乎不可能的事情所以在写301的时候就只有手动对应了这个比较麻烦。 4、Tags的URL结构Bo-Blog的Tags是www.ZFreet.com/blog/go.php/tags/XXX/直接是目录形式WordPress的是www.ZFreet.com/post/tag/XXX/。不要小看这个东西个别比较新鲜的Tags也会成为访问入口这个结构比较一致容易转换。 在这次搬家过程中 301重定向要尽量满足上面的四点才能尽可能的保住搜索流量为此我在.htaccess文件里这样写道 #ID RewriteRule ^blog/read.php/8.htm /post/repair-new-notepad.html [R=301] # PostRewriteRule ^blog/post/(\w*) .php$ /post/$1.html [R=301] RewriteRule^blog/read.php/(\w*) .htm$ /post/$1.html [R=301] # Tags RewriteRule^blog/go.php/tags/(\w*)/ /post/tag/$1 [R=301] # Feed RewriteRule ^blog/feed.php/feed [R=301] # Links RewriteRule ^blog/ / [R=301]
其中的#ID就对应到上面的第3点得手动转换日志然后把每一篇的别名都写一条301幸好只转了少许的几篇工程量还不算太浩大。 在用了上面的301条件后搜索引擎并不能全部保留住原来Bo-Blog里的内容 因为很多链接都空了会跳到404所以那些没有手动转换的日志会陆续的消失。 写了301的则会保留依然是原来Bo-Blog的结构会自动跳到现在对应的日志对访问者没有任何影响不过排名会下降。当我发现某篇写了301的日志无法带来搜索流量时我就会撤掉那条301让它们自生自灭。 现在回看 301重定向的效果基本达到了我的需求让想留的东西能留住比如但还是旧的URL不需要的东西慢慢消失。等后面继续的逐步稳定后我会试图删除原来所有旧的带blog/的抓取结果估计完全达到平滑转换的效果需要至少一年的时间。 php法
1、 RSS Feed feed.php对现代网民来说 RSS阅读器已经是看网页的必备工具 因此RSS种子的地址几乎是众多网址中最重要的一个。 2、如果你懒得换也行反正我已经重定向了。Bo-Blog的feed.php文件在不带参数的时候是博客正文的RSS带参数go的时候可能是评论也可能是分类目录的RSS 因此需要在WP根目录下建一个feed.php文件里面对参数作简单的判断把原来的RSS重定向到WP的RSS中。以下代码只是本博客的转向具体怎么写要根据具体搬家结果分析。 我的博客搬家过程中分类数字2不知为何被搬家程序略过了因
此当分类数字为2的时候特殊处理否则从原来的go参数中提取分类数字传给WP的cat参数。 <; ! –p<;br–>;header( “HTTP/1. 1 301 Moved Permanently” ) ;
2、博客阅读页面 read.php由于在Bo-Blog系统中我使用了链接地址优化Rewrite而搜索引擎收录的既有优化地址也有动态地址 因此要判断一下地址究竟是哪种类型然后把参数提取出来传给WP。含有htm的地址是优化的地址从中提取.htm之前的数字传给WP的p参数就可以到新的页面地址了。 英文博客搬家过程中 日志的数字ID和新系统对不上那些ID>;2的日志都被+=1了所以中间对英文日志ID作了特殊处理。变量$prefix用来判断是中文还是英文站。 <; ! –p<;br– >;header( “HTTP/1. 1 301 Moved Permanently” ) ;
3、标签页面 tag.php我觉得如果没有标签的话这世上的网页会减少一半。用site:命令在Google中一看就知道一个小破站却有几千个页面被搜索引擎收录而真正的日志不过上百篇而已那多出来的页面几乎都是各种导航页面其中就包括标签导航。鉴于标签这么重要原来的tag.php自然要加上、改写一下了。 在我原来的系统中 由于标签是空格分隔导致我只好以下划线_把一些英文字句连起来现在WP中是以逗号分隔而且标签有别名空格被替换为- 因此原来的标签中下划线要被替换为-所以用到了str_replace()函数。在重定向之前要严重注意tag参数已经被解码了因此需要重新编码即urlencode() <; ! –p<;br–>;header( “HTTP/1. 1 301 Moved Permanently” ) ;if(! isset($_REQUEST[";tag"; ] ) ) { header( “Location:http://$_SERVER[HTTP_HOST]/cn/“) ; } else { header( “Location:http://$_SERVER[HTTP_HOST]/cn/?tag=” .urlencode(str_replace( ‘_’ , '-’ , $_REQUEST[";tag"; ] ) ) ) ; } ?>;
4、其它页面的重定向我喜欢WP系统的一个重要原因就是它的各个文件分工非常明确模板系统也是如此所有的模板系统中都可以用一个404.php来出来404错误。除了上面三个重定向之外大约还剩下70%的页面重定向没有完成不要惊愕于这个工作的复杂性如按日期的归档、精华文章、评论页面、分类显示、附件下载和登录页面等等。 由于这些页面一般都是被搜索引擎以静态地址收录的所以不能像前面那样写PHP文件完成重定向只能根据网址来逐个判断把原地址转向新地址。其中有无数的细节要注意如原来的星标日志对应新系统中的featured分类文章、两个系统的分类ID的对应关系等。综上这个404.php便极度冗长。 怎么知道你的网站是否有404错误呢在WP中只需要在404.php文件中用mai l ()函数往你的邮箱发报告就可以了。我将不能成功重定向的页面都发到404@yihui.name了看看$_SERVER变量大概就知道是哪一页出错了 以及是活人点的链接还是搜索引擎的蜘蛛人在看我的页面。 <;?php$info=$_SERVER['REQUEST_URI' ] ; $pref ix=substr($info,1, 2) ; if (strpos($info, ‘/index’ ) ) {header( “HTTP/1. 1 301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else if(strpos($info, ‘/post/’ ) ) { header( “HTTP/1. 1 301 Moved Permanently” ) ; $tmp =current(explode( ‘_’ , pathinfo($info, PATHINFO_FILENAME) ) ) ; if ($pref ix== ‘en’ ){ i f ($tmp >; 2) { $tmp += 1 ; } }header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /?p=” . $tmp) ; } else if(strpos($info, ‘/star’ ) ) { header( “HTTP/1. 1 301 Moved Permanently” ) ; $tmp =$prefix==’ cn’ ? 618 : 150;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /?cat=” . $tmp) ; } elseif (strpos($info, ‘/view’ ) ) { header( “HTTP/1. 1 301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /?feed=comments-rss2 “) ; } else if (strpos($info, ‘/category’ )) { header( “HTTP/1. 1 301 MovedPermanent ly” ) ; $tmp = explode( ‘_’ , pathinfo($info, PATHINFO_FILENAME) ) ; if($prefix == ‘cn’ ) { if (count($tmp) >; 1) { if ($tmp[1] == ’ 2′ )
{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $pref ix. ” /?cat=” .$tmp[1] ) ; } } else{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } } else{ $catmap = array(’ 7′ =>; 6, ’ 8′ =>; 7, ’ 9′ =>; 9, ’ 0′ =>; 117, ’ 1′ =>;11, ’ 2′ =>; 147, ’ 6′ =>; 12, ’ 10′ =>; 148, ’ 3′ =>; 4, ’ 4′ =>; 8, ’ 5′ =>;
10) ; if (count($tmp) >; 1) { if (array_search($tmp[1] , array_keys($catmap) ) !==false){ header( “Location:http://$_SERVER[HTTP_HOST]/” . $pref ix. ” /?cat=” .$catmap[$tmp[1] ] ) ; } else{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } } else{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } } } else if(strpos($info, ‘/archive’ ) ) { header( “HTTP/1. 1 301 Moved Permanently” ) ; $tmp =explode( ‘_’ , pathinfo($info, PATHINFO_FILENAME) ) ; if (count($tmp) >; 2) { if(s tr l en($tmp[1] ) == 1) { $tmp[1] = ’ 0′ . $tmp[1] ; } i f ($tmp[2] <; 2007 | | $tmp[2] >;
2009) { header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $pref ix. ” /?m=” . $tmp[2] . $tmp[
1] ) ; } } else {header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } }else if (strpos($info, ‘/showday’ ) ) {header( “HTTP/1. 1 301 Moved Permanently” ) ;$tmp=explode( ‘_’ , pathinfo($info, PATHINFO_FILENAME) ) ; if (count($tmp) >; 3) { if(strlen($tmp[2] ) ==1) { $tmp[2] = ’ 0′ . $tmp[2] ; } if (strlen($tmp[3] ) ==1) { $tmp[3]= ’ 0′ . $tmp[3] ; } i f ($tmp[2] <; 2007 | | $tmp[2] >; 2009){ header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /?m=” . $tmp[1] .$tmp[2] . $tmp[3] ) ; } } else{ header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } } else if(strpos($info, ‘/attachment’ ) ) {header( “HTTP/1. 1 301 Moved Permanently” ) ; $tmp= pathinfo(urldecode($info) , PATHINFO_BASENAME) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /wp-content/uploads/”. $tmp) ; } else if (strpos($info, ‘?tag=’ ) ) { header( “HTTP/1. 1 301 MovedPermanently” ) ; $tmp = ” ; if (isset($_REQUEST[";tag"; ] ) ) { $tmp =$_REQUEST[";tag"; ] ; }header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /?tag=” . $tmp) ; } elseif ($info== ‘/’ . $prefix. ’ /tag/’ ) {header( “HTTP/1. 1 301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else if(strpos($info, ‘read.php’ ) ) { header( “HTTP/1. 1 301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /?p=” . pathinfo($info,PATHINFO_FILENAME) ) ; } else if (strpos($info, ‘links.php’ ) ) { header( “HTTP/1. 1301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else if(strpos($info, ‘cv_yihui’ ) ) { header( “HTTP/1. 1 301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/cv/cv_yihui_” . $prefix. ” .htm“) ; }else if (strpos($info, ‘visit.php’ ) ) {header( “HTTP/1. 1 301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else if(strpos($info, ‘securitycode.php’ ) ) {header( “HTTP/1. 1 301 Moved Permanently” ) ;
header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” / “) ; } else if(strpos($info, ‘login.php’ ) ) { header( “HTTP/1. 1 301 Moved Permanently” ) ;header( “Location:http://$_SERVER[HTTP_HOST]/” . $prefix. ” /wp-login.php “) ; }else { //if(array_search($ext, array( ‘gif’ , ‘js’ , ‘png’ , ‘jpg’ , ‘jpeg’ ,
‘css’ ) ) !== false) { if (strpos($info, ‘/images/js’ ) | | strpos($info,
‘/images/lightbox’ ) | | strpos($info, ‘/images/arrows’ ) | | strpos($info,
‘/template/fighting/’ ) | | strpos($info, ‘/emot/thumbnail/’ ) | | strpos($info,
‘/editor/ubb/’ ) | | strpos($info, ‘/images/r.css’ ) | | strpos($info,
‘/images/others’ ) | | strpos($info, ‘/images/weather’ ) | | strpos($info,
‘/images/weather’ ) | | strpos($info, ‘jslang. js’ ) ) {header( “HTTP/1. 1 301 MovedPermanently” ) ; header( “Location:http://$_SERVER[HTTP_HOST]/” . $pref ix. ” / “) ; }else { mail(’ 404@yihui.name’ , “Invalid link: ” . urldecode($info) , ‘Requestpage:http://yihui.name’ . $info. PHP_EOL. ‘Referer: ‘ . $_SERVER['HTTP_REFERER' ] .PHP_EOL . print_r($_SERVER, true) , “From: Yihui Xie <;xie@yihui.name>;” ) ; } ?>;<;?php get_header() ; ?>; <;div id=” wrapper” >; <;div id=” home_content” >; <;div>;<;p>;Sorry, I’ m changingmy blog systemnow; if the page you are looking for doesn’ texist, please visit <;a href=” http://yihui.name/<;?phpecho$prefix; ?>;/” >;http://yihui.name/ <;?php echo $prefix; ?>;/<;/a>; . I’ ll fix theoriginal links soon. Thanks!<;/p>; <;p>;<; img src=” <;?phpbloginfo( ‘template_directory’ ) ; ?>;/images/mal. jpg” alt=” a questioning duck”/>; <;/p>; <;/div>; <;div>; <;ul>; <;li>;Mal the Error Duck says, “Uh oh! 404! Thatmeans the page you are looking for doesn’ t exist, at least not anymore. ” <;/li>;<;/ul>; <;h2>;Latest <;?phpprint(isset($getOptions[";num_posts"; ] )?$getOptions[";num_posts"; ] :” 10″ ) ; ?>;articles<;/h2>; <;ul>; <;?php get_archives( ‘postbypost’ ,isset($getOptions[";num_posts"; ] ) ?$getOptions[";num_posts"; ] : 10, ” , ‘<;li>; ’ ,
‘<;/li>; ’ ) ; ?>; <;/ul>; <;/div>; <;/div>; <;/div>; <;?php get_footer() ; ?>;<;?php } ?>;