LBS to WordPress2.1 完美攻略 – 姿态永恒

转载请保留链接:http://www.awflasher.com/blog/archives/670

刚刚发现,由于之前新网的DNS被黑,我临时更换了DNS解析服务器,而后来这件事情逐渐被我遗忘,导致各大结点似乎还Cache了老的DNS解析服务器,因此,时而解析到老的LBS,时而解析到新的WordPress。今天终于发现问题并解决了。现在应该“全球同步了”。看到许多朋友留言或发信件询问ASP系统到WordPress的转换,我想写一篇文章来与大家分享。我并不想按照传统的“攻略”的方法来记录第一部该干什么,第二部该干什么,而是按照“流水账”的形式记录,我一步一步是如何走过来的。这肯定会花费你更多的阅读时间,但我肯定这种“讲故事”的方式能让你更能透彻地体会到其中的乐趣。毕竟,我不是所谓的专栏作家。当然,最后会有一个概要总结。

Update @ 07.02.13
不知道等全球DNS同步到这里还有多久,但我确实已经激动万分。这次转换的同时,公司也在与国内包括央视、湖南卫视、北京电视台在内的多家大型电视台合作,我非常荣幸能够参与平台相关部分的开发,但同时Blog的转换不得不等到我彻底腾出业余时间来进行。总的来说,转换还是非常顺利的,不但“优雅”地完成了站内连接的URL正则替换(即批量把我自己的文章中对自己网站内部连接地址按照WP的格式重写),而且也设计了一套属于自己的WP皮肤(当然,基于huddletogether的架构,我懒得自己写一堆DOM了)命名为“The Enhancing Spring (TES) ”。我把Blog的标题换成了“姿态永恒”,也算是表明了自己对这个Blog的态度将更加认真、积极,保证每一篇文章内容的真实、充实和质量。

Update @ 07.02.09
仔细看看这篇文章,就知道为什么我迟迟没有转换了。如今数据库、内部链接正则已经全部搞定,CSS也基本搞定。预计下周一就能正视上线了(需要部署、调试)。
这次转换得到了各界朋友的帮助,也受益匪浅,转换的具体细节和心得我也全部公布在后,转换内容除了Zola的传统转换外,我修补了老米甲的tag补丁和html编辑补丁两个老大难问题。如果您觉得此文对您有益,欢迎转载,请保留出处 – http://www.awflasher.com/blog/

Update @ 07.01.23
One Jump从去年9月份到今年,似乎我显得有些扭捏。其实不然,去年9月到现在,我从对DIV+CSS、JS、PHP+Mysql一无所知的只懂Flash里面几个简单function的小菜鸟,变成了一只老鸟。已经很不容易了。呃……WordPress的结构由于我本身特别不习惯,所以一直不敢轻举妄动,哪怕我把database都搞定了,还有两个大难题:1、UI(CSS);2、URL Rewrite(之前的残留链接统统要过来)
今天在yskin的帮助下,找到了一个很好的东西:K2皮肤。我想不久我的CSS也可以准备Ready了。

以下是数据库转换心得:@07.01.06
去年9月份就转好过数据库,但一直没有时间研究具体的问题、隐患。今天突然发现SiC更新了日志,追加了关于LBS2.0的一些消息,纵然SiC的原话还是“遥遥无期”。我仍然觉得有些许伤感。哪怕LBS只是SiC当年自己的玩物,但对我来说,这套LBS系统我太熟悉太熟悉了。使用了近两年,而且为我自己的系统做了太多的改进、优化
“舍不得,舍不得,有舍才有得”……祝福SiC和他的LBS,我仍然在努力想办法把老米甲提供的Tags挽救回来。所以近期肯定不可能看到我的新WordPress Blog上线。怎么说呢,有一些PageRank我仍然割舍不下。

OK,用http://www.neato.co.nz/ultimate-tag-warrior/ 插件,发现新建立了三个tags表,估计有希望把tags拿下~

OK.2007年1月6号,我终于搞定了。

一米六二师兄的鼎力支援以及Zuola提供的转换工具的帮助下,我已经优雅地完成了数据库转换。下一步就是部署了。
这里记录一下转换关键步骤以及可能遇到的麻烦。


1、配置工作环境(PHP+Mysql),下载转换程序(点此下载)以及自己LBS的Access数据库。
2、按照转换程序的说明配置Access数据库路径,并执行转换程序,输出SQL文件
3、将SQL文件用Emeditor打开并以UTF-8格式保存
4、不要用PHPMyAdmin导入。这个导入除了要麻烦你去修改该死的PHP配置文件之外,还可能对WordPress2.0.5以上的版本造成乱码Bug。
5、使用mysql命令行,source调用你的SQL文件。注意路径要写成”e:/1.sql”这种语法。
6、安装 UltimateTagWarrior 插件
7、注意WP的UTW中的Tag表是否清空。
8、使用我提供的tag转换程序生成所有的tags、映射关系表的sql文件
9、重复步骤5

补充:
1、我的转换程序自己改了表前缀为”aw_”,一般来说wordpress的为”wp_”,如果你想用,请自行替换。
2、原来sunu没有转用户表,我补充上去了,但由于无法较好的移植密码,因此一定要注意用户表必须一次转成,否则每次都回往后追加记录,没办法,因为我的SQL语句还停留在入门水平。我只转换了记录了Email的用户,由于用户量有1400,而且80%用户是非活跃用户,于是只能舍弃了。
3、所有的URL Rewrite必须在激活Permalink的情况下进行。

备忘:
WP的UTW中的Tag表逻辑:
与tags有关的三个新表
1、post2tag 关系映射表
2、tags 标签表
3、tag_synonyms tags同义表(目前不是很清楚具体作用)

LBS的Tags表逻辑:
1、blog_Tags表
2、blog_Article表

tags映射已经完成!受不了VBS了,用JScript写的,源代码下载地址
>_<很无奈发现UTW给postmeta表写了N多数据……似乎除了post2tag之外,这些数据也描述了tag与post之间的关系,我真不知道怎么回事,已经去官方论坛打探了……
http://www.neato.co.nz/forum/
附:针对wp2.1发表评论后Tag消失的补丁:
http://moeffju.net/blog/2006/12/25/wordpress-21-alpha3-utw/

patch:
1、注意老的LBS的结构,尤其是Author的a标签的迁移
2、评论的ajax检测继续做

patch2:
PR挽救方案-
一、增加LBS重写模块,并设置httpd的AddType解析asp文档为php文档。
冲定向模块主要针对id与tag两种requeryString做redirect,注意要做301重定向,详细内容见后。

需要挽救的PR页面包扩(不分先后)
1) /blog/article.asp -> About
2) /blog/gbook.asp -> About
3) /blog/user.asp -> About
4) /blog/trackback.asp -> About
5) /blog/default.asp -> Index
6) /blog/defaultcv.asp -> Index
6) /blog/defaultcc.asp -> Index
7) /blog/tags.asp -> TagsClouds
8) /blog/comment.asp -> RecentComments(Depend on Plug-ins)
9) /blog/feed.asp -> FeedBurner -_-#~

可以参考的映射PHP方式:
在WordPress的Index.php下加入配置文件,建立一个配置数组,对于各种querystring都能映射到相应的URL。

$lbsmapping = array(
‘id’ => ‘archives/’,
‘tag’ => ‘tag/’
);
require_once(‘./lbs-wp.php’);

核心是lbs-wp.php

<?php
foreach ($lbsmapping as $key => $value)
{
if(isset($_GET[$key]))
{
header(‘HTTP/1.1 301 Moved Permanently’);
header(‘Status: 301 Moved Permanently’);
header (“Location: http://&#8221;.$_SERVER[‘HTTP_HOST’$]$. rtrim(dirname($_SERVER[‘PHP_SELF’]), ‘/\’).”/”.$value.$_GET[$key]);
exit;
}
}
?>

二、对于从LBS Export出来的SQL语句做批量URL替换,尤其对于原asp连接批量替换,减少站内PR损耗。推荐Emeditor。

三、查询Google Webmaster Tools的 Diagnostic下的Web crawl下的出错内容并从SQL文件中把相应的站内连接直接干掉。
“HTTP errors (4) | Not found (183) | URLs not followed (0) | URLs restricted by robots.txt (0) | URLs timed out (0) | Unreachable URLs (123)”

四、最快速度在WP下面启动sitemap。

五、有URI洁癖的话,考虑为postslug写入相应的值,恩……这个有点复杂……因为LBS的post都没有postslug 😦

六、外部连接只能Redirect,但是内部连接我们不能偷懒,针对内部连接的优化的EmEditor正则匹配,将内部连接全部转换为WP格式。
1 – 针对id到archives的rewrite映射

href=\”[^?]*?id=(d+)[^>]+>([^<]+)</a>
href=\”http://www.awflasher.com/blog/archives/1\” title=\”2\”>2</a>

2 – 针对tag到UTW的rewrite映射

href=\”[^?]*?tag=([^\]+)[^>]+>([^<]+)</a>
href=\”http://www.awflasher.com/blog/tag/1\” title=\”2\”>2</a>

六、SEO Solutions by Google WebMaster Help Center – 针对SEO的解决方案
My URL changed, so how can I get Google to index my new site?

While we can’t manually change your URL in our search results, there are steps you can take to make sure your transition is smooth.

First, you can redirect individuals to your new site. If your old URLs redirect to your new site using HTTP 301 (permanent) redirects, our crawler will discover the new URLs. For more information about 301 HTTP redirects, please see http://www.ietf.org/rfc/rfc2616.txt

Google listings are based in part on our ability to find you from links on other sites. To preserve your rank, you’ll want to tell others who link to you of your change of address. One way to find a sampling of sites that link to yours is to perform a link search. To learn how, please visit http://www.google.com/help/features.html#link. To obtain a comprehensive list of the links that point to your page, perform a Google search on your URL. On the results page, select the “Find web pages that contain the term” link, and Google will provide you with webpages that mention your address.

总结大致两点
1、做301重定向,这个我已经提供了解决思路(可以参考PHP手册)
2、改外部连接。其实内部连接同样重要,参见上面的正则匹配。

最终总结

  1. 下载原LBS系统的DataBase。
  2. 安装WordPress2.0.7,可以在WordPress官方网站下载
  3. 对于使用了老米甲的插件的LBS用户,若原文发表过html贴,则不需要再进行UBB匹配,这一点要注意。
  4. 使用上文提到的工具到处LBS的数据库为SQL文件,命名为maindb.sql,并确认编码为UTF8
  5. 对maindb.sql进行批量正则替换,把SQL文件中所有的内部连接进行URL替换,确保最小链接损失。(内部连接就是你以前文章中对自己blog下各类资源,如日志和tag的引用)
  6. 对于有Tags的用户(估计不多) ,按上文方式导出tag的SQL文件,命名为tag.sql,并确认编码为UTF8
  7. 先用mySQL的命令行方式,用“source”语句导入maindb.sql文件。注意,不要用PhpMyAdmin的导入!
  8. 安装UTW最新版,同第6步,导入tag.sql。
  9. 按上文,进行301重定向架构。
  10. 在本地全面检查blog系统,最好改一下host把原blog的Domain指向127.0.0.1,然后看看搜索引擎接入的重定向是否完美、优雅。
  11. 下载2.1并升级

LBS到此为止

LBS到此为止,但,这并不代表WP会接踵而至。为了监督自己抽出时间来把WP的事情落实,我必须下定不再发文的决心。其实我发现,在我决定放弃LBS的时候,我发文的欲望已经远远不如以前了。

数据库已经完成,剩下的CSS也在修整之中,URL Rewrite也已经询问了一米六二

我骨子里对任何属于我的东西都有一种极大的占有欲,但一旦我下定决心换掉的时候,它便一文不值。因为能让我下定决心放弃的,一定有它不可原谅的地方。不管我为改善自己的这个LBS付出过多少心血,我都要将它彻底放弃,从此LBS和我,将相隔两个世界。

放弃一个实体,但仍然要保留一种姿态。我花多少时间在LBS上,我就会花多少时间在WP上。知道,把它变成我想要的那种模式。

突然觉得,对我而言,爱情亦如此。我谈了四五场恋爱了,虽然我是那么地不愿意,但我身边的女人还在继续。

[分享]针对LBS的一些改进

在国内“泛滥”的ASP技术的支援,再加上ASP/JS技术以及UI、UE和一些基本的Blog理念确实被SiC发挥到了在那个时代比较高的水平,LBS成为了2004-2005年最热门的一个Blog系统之一。
我和我的许多朋友都是使用这款系统。
后来SiC投身Maxthon的研发,很少有机会回来维护、更新LBS,而ZBlog、PJBlog等系统的挺进以及更多的人意识到modRewrite的优势,因此有一部分人转到了PJ、Z,更有一部分人转到了WP、MT等平台。
然而目前LBS的用户我想仍然不是一个小数字,尤其是许多人没有时间去配置Apache,或者难以完成Access-Mysql转换。而且除了SiC之外仍然有很多人在为LBS作着贡献。

针对LBS,我也有一些感受想说,分以下五个方面讲。

一、SEO方面
LBS在SEO方面其实并不是很完美的。这也跟ASP麻烦的Rewrite技术有关。确实,通过ISAPI-Rewrite可以实现ASP的URL重写,但我觉得简单得重写仍然比不上Z-Blog或者WP那样直接产生需求URL地址那么好;而且,大多数人使用的都是虚拟主机,试想,有多少虚拟主机的提供商会为你一个小小的Blog装一个ISAPI-Rewrite呢?
但是,一些细节的改善,我觉得在SEO方面也是有作用的。
其实SEO最关键的就是站内链接的设计,具体体现在以下几点:

1、首页的跳转
LBS的具体内容页跳转到首页的地址是带有default.asp的,而这样跳转最可恶的就是使得含有default.asp的URL地址参与PR分值。我个人不知道Google、Baidu是否会在收录页面方面产生麻烦,但我通过改变这个链接,发现PR确实获得了提高。

2、改进日志链接
我发现,Google更乐于收录我的“永久链接”地址,而非文章地址。用过LBS的朋友都知道,LBS的日志地址可以通过诸 Continue reading “[分享]针对LBS的一些改进”

Flashplayer Version Checker for LBS

2007年5月12日更新:近日发现很多人来到这里。其实这个插件作为我为LBS(一套国人开发的知名博客系统,运行于ASP+Access)做的为数不多的插件,在我从LBS转换到WordPress(一套知名博客系统,运行于PHP+Mysql)之后就没有再管了。当然,您也可以继续使用(只需要嵌入到您的网页就可以了 )。如果您想获得更多的功能,可以使用SWFObject嵌入方式(下载+中文文档)

相关资源:
Flash播放器下载|Flash插件安装

=Updated=
更新了,增加了嵌入字体,由原来的1k变成了5k,但是再也不会有讨厌的锯齿了,虽然size大了不少大,但是4k跟网页本身size相比,微不足道。

单击显示(对于1024×768的用户,麻烦你们往下翻页,这是由于我的WordPress与LBS的一些不兼容性造成的)

getocx.swf

[原创]Blog更新中遇到的问题

数据库的转换用SIC的程序非常顺利,这个要感谢sic 的大智慧。

不过后来发现存在这样一个问题,对于原来的blog中的很多帖子地址(Lblog系统的)是以

xxxxx/blogview.asp?logID=N

的形式呈现的

由于原来的blog被搜索引擎跟踪过此,那么一些通过搜索引擎找到blog的用户;或者,曾经记录过你原来blog的用户,都会打开Lblog系统的blogview.asp这样一个文件而不是LBS的article.asp

那么只需要做一个转换便可以了
这样做便可

最好在您的blog目录下加入下面的ASP文件,取名为
blogview.asp,这样,人家原来收藏的您的Lblog可以自动跳转到LBS,而且搜索引擎定位的老blog连接也可以用它自动跳转。
详情大家可以去google搜索一下“童话 vos awflasher“这几个关键字:)

<%
kind=Request.QueryString ("logID")
Response.Write("<html><title>aw'sblog Auto Redirect for Lblog-&gt;LBS</title>")
Response.Write("<head><meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" /><meta http-equiv=""Refresh"" content=""1; url=default.asp?id="&kind&""" /></head>")
Response.Write("<link rel=""stylesheet"" type=""text/css""

Continue reading “[原创]Blog更新中遇到的问题”