LBS 转换 WordPress 全过程
转载请保留链接:http://huaidan.org/archives/1879.html
终于从LBS转到WordPress了,很早就想换WordPress了,原来也说过“是否该放弃LBS?“,真的是犹豫了很长的时间,一方面是对LBS的感情以及一次次的失望,另一方面是WordPress的诱惑。同时也由于没有合适的空间,因此这个计划就暂时搁浅了,直到最近跟几个朋友一起合租了(mt) Media Temple,才下定决心要换了。
买空间的时候也费了不少力气,因为必须信用卡支付,我又没有信用卡,就借朋友的信用卡去买,当时订单填的我名字,信用卡名字又是朋友的,然后老外就给我邮件,说我的订单出了问题,必须要电话过去解决问题,不能通过邮件解决,这可把我难住了,我的蹩脚英语还从来没有跟老外交流过,无奈之下只有找朋友帮忙打电话,结果还是不行。最后还是通过邮件,告诉老外我的英文很烂,想知道我的订单是哪里出了问题之类的,然后向老外解释一番,最后终于解决了。
接下来就是转换数据了,这个过程真的是颇费周折,因为我的数据比较多,有1800多篇文章,再加上评论什么的,原来的LBS的数据库达到了14M多,当时想用 Wady写的那个转换程序,因为他是转成xml的,可以直接在在WordPress后台导入就行了,但是不知道是不是因为我的数据库太大,总是转换不成功。
最后只有用Sunu写的,Matt修改过的那个,然后我又做了修改,其实也只是跟Wady写的那个综合了下,比如一些UBB标签的替换之类的。数据转换之后又要挽救原来的外链之类的,写rewrite又花了不少时间。
这次转换,我的blog也有了很多变化:
- 主域名换成了huaidan.org,因为本来我的域名就够长的了,再加上www就更长了,而且这个域名我也不准备放其他东西,只是放blog,所以huaidan.org就足够了
- blog目录由原来的/blog换到了根目录,以前需要输入www.huaidan.org,然后再点下链接或者直接输入www.huaidan.org/blog才能进到blog页面,有点繁琐,而且以前的首页也没放什么东西,毫无意义,现在则只需要输入huaidan.org就可以了
- url也换成了WordPress的伪静态,我采取的是/archives/%post_id%.html的结构
- 存在的缺点,以前是放在师傅的服务器上,在国内,宽带也很足,所以访问速度很快,我这里测试网通电信访问速度都不错,而现在放到了国外的服务器上,速度比以前慢了一些,而且WordPress本身的执行速度是比LBS要慢的,更多的功能是需要速度为代价的,希望大家能多多包涵
- 评论方面比以前要好多了,以前用LBS的时候,一直都要忍受spam的痛苦,后来干脆把guest组的评论权限给取消了,需要注册登录后才能发表评论,还限制了评论中不能含有url,已经不只一位朋友跟我说发评论的时候辛辛苦苦打了很多,结果最后发不出去
不过我以前用的LBS没有tag,这次转到WordPress之后,我会慢慢给以前的文章加上tag,不过将近2000篇文章,很大的工作量。。
在所有数据都转换完之后,域名指过来之前,给我的LBS统计截了张图留念:
最后写一下自己的转换过程供大家参考:
- 本地搭建WordPress的运行环境(推荐XAMPP这个套件),mysql、php最好跟你将要迁移的服务器上的版本是一致的
- 下载convert.asp,然后将你的LBS数据库放到相同的目录下,然后更改数据库名或者convert.asp的25行,保证数据库名和convert.asp中的名字一致,然后在本地IIS或者你的blog上浏览convert.asp,按照提示将LBS数据库导出为LBS_DB_ALL.sql
- 将转换后的LBS_DB_ALL.sql用编辑器另存为UTF-8编码(这里编辑器用EmEditor,因为他的正则好用点,不过我还是喜欢EditPlus)
- 打开LBS_DB_ALL.sql,替换原LBS中的表情,替换规律如下,这个是我对比LBS和WordPress中的表情之后,尽量找匹配的来替换,双引号中的部分,注意空格,同时将其中的中文冒号替换为英文的:
[smile] —>” :smile: ”
[confused] —>” :???: ”
[cool] —>” :cool: ”
[cry] —>” :cry: ”
[eek] —>” :eek: ”
[angry] —>” :evil: ”
[wink] —>” :wink: ”
[sweat] —>” :mad: ”
[lol] —>” :lol: ”
[stun] —>” :shock: ”
[razz] —>” :razz: ”
[redface] —>” :oops: ”
[rolleyes] —>” :roll: ”
[sad] —>” :sad: ”
[yes] —>” :!: ”
[question] —>” :?: ”
[heart] —>” :grin: ”
[star] —>” :arrow: ”
[music] —>” :mrgreen: ”
[idea] —>” :idea: “如果要替换后的表情生效,需要在转换完毕之后,在WordPress的后台—设置—撰写中将”自动将 :-) 和 :-P 等表情符号转换成图片显示”打开
- 替换LBS_DB_ALL.sql中的日期(不然导入mysql之后,文章和评论的发表时间都会是00:00,我这里是这样的),注意空格:
” 上午 ” —> ” ”
” 下午 ” —> ” “ - 替换没有转换干净的UBB,因为我发现某条UBB分割开来放在LBS数据库blog_Article表中的log_content0和log_content1中的时候,转换之后就会出现问题,比如说[img]http://huaidan.org/1.gif[/img]这条,如果是 [img]http://huai放在了log_content0中,而dan.org/1.gif[/img]放在了log_content1中,那么转换之后就会变成[img]http://huai<!–more–>dan.org/1.gif[/img]这样的形式,只是在log_content0后加了 <!–more–>标签,那么我们需要用EmEditor中的正则替换以下部分:
<code>(.*?)</code><!–more–>(.*?)\[\/code\]
替换为:
<!–more–><code>\1\2</code>\[img\]http(.*?)<!–more–>(.*?)\[\/img\]
替换为
<img src=\\\”http\1\2\\\” />[email这部分我是手动替换的,因为我这里只有两个[b]替换为<b>
[/b]——–</b> 这两个标签主要是评论中的没有被转换\[file=(.*?)<!–more–>(.*?)\](.*?)\[\/file\]
替换为
<a href=\\\”\1\2\\\” target=\\\”_blank\\\”>\3</a>
\[\*\](.*?)<br />
替换为
<li>\1</li>[*]替换为<li>
[/list]替换为</ul>
\[url=(.*?)<!–more–>(.*?)\](.*?)\[\/url\]
替换为:
<a href=\\\”\1\2\\\” target=\\\”_blank\\\”>\3</a>
- 挽救内链,这个正则我写不好,所以就用了aw的正则,再加上我自己的笨方法来达到目的,LBS_DB_ALL.sql中按下面方法替换
http://huaidan.org/blog/article.asp?id=
http://www.huaidan.org/blog/article.asp?id=
替换为:http://www.huaidan.org/blog/article.asp?guizaid=
然后正则:
href=\\\”[^\?]*\?guizaid=(\d+)[^>]+>([^<]+)<\/a>
替换为
href=\\\”http\:\/\/huaidan\.org\/archives\/\1\.html\\” title=\\”\2\\”>\2</a>
- 挽救原来LBS下上传的文件链接地址,将原来LBS的uploads目录上传到WordPress的wp-content目录下,然后LBS_DB_ALL.sql中
“uploads/200
替换为
“http://huaidan.org/wp-content/uploads/200 - 本地安装wordpress 2.0.7,这里可以下载
- 在phpmyadmin中把连接校对改为utf8_general_ci,然后新建WordPress数据库,编码为utf8_general_ci
- 在phpmyadmin中导入LBS_DB_ALL.sql,导入时选择UTF-8
- 这时你会发现WordPress的数据库中所有的中文都是乱码,先不要管他,直接用wordpress 2.5替换,然后访问wp-admin/upgrade.php进行升级
- OK,现在就基本完成了,这时blog名会变成乱码,那么修改下blog名
- 友情链接,因为WordPress的友情链接导入只支持OPML的格式,因为我是把原来LBS中的友情连接保存成html文件,然后导入到FireFox中,用OPML Support导出成OPML文件,再导入到WordPress的友情链接中
- 挽救外链,主要是default.asp和article.asp两个页面,default.asp还好办点,但是article.asp中带查询,例如需要让http://www.huaidan.org/blog/article.asp?id=1879 跳转到 http://huaidan.org/archives/1879.html,让我google {QUERY_STRING}了好长时间才找到解决办法,光写rewrite就花了我一个下午的时间,直接贴出来我的.htaccess内容给大家做个参考:
RewriteEngine On
RewriteBase /#blog/article.asp?id=num 跳转到 archives/num.html
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^(.*)$ archives/%1.html? [R=301,L]# 去除www
RewriteCond %{HTTP_HOST} ^(www\.huaidan\.org)(:80)? [NC]
RewriteRule ^(.*) http://huaidan.org/$1 [R=301,L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]# 防止盗链
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia\.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo\.com [NC]
RewriteCond %{HTTP_REFERER} !google\.com [NC]
RewriteCond %{HTTP_REFERER} !bloglines\.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner\.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky\.com [NC]
RewriteCond %{HTTP_REFERER} !huaidan\.org [NC]
RewriteRule .*\.(gif|jpg|png|js|css|rar|zip|exe|mp3|swf|css|js|mpg|mpeg|wmv|rm)$ – [F]Redirect permanent /blog/feed.asp http://feed.huaidan.org
Redirect permanent /blog/default.asp http://huaidan.org
Redirect permanent /blog http://huaidan.org# 停示显示目录列表
Options -Indexes注意.htaccess的规则是有顺序的。
- 大概就这些了,OVER!
写完之后一看很长,也懒得检查有没有语法错误或者错别字了,大家如果发现有问题的地方直接在下面评论,我会进行修改。
哈哈
我的沙发
恭喜你加入wp大家庭
这风格没有你之前的好看了..
@Black-Xstar 嘿嘿,加入了
@ruery 现在的这个theme是简洁的类型,我喜欢这样的。 :)
呵呵,不错,我订阅你的博客有段时间了,技术含量好高啊
嘿嘿,谢谢夸奖,也谢谢你的支持~
以后要常来啊。
恭喜。分享是最重要,估计这个日志的点击量会很高。
@xiaoxiao 我就是在转换过程中吃了点苦,所以把过程写下来,一是为了记录下,二是希望可以方便别的朋友。
不错。。终于转过来了。。。继续你的blog之旅!!
改成wp的了,不错,终于放弃了asp。
还是上面那位朋友说的,风格虽然简单,不过没有以前的好看。
@lonkil 嘿嘿,慢慢习惯就好了,反正我是挺喜欢现在这个样子的。
的确是颇费一番周折。。
喜欢你善于总结的习惯。
总体感觉很进步啊 呵呵 果然不是凡人 总结的很精辟
恭喜鬼仔转换成功,呵呵,我之前也有试过,不过XML会把隐藏的文章也转换了,我看看,太麻烦,就没有换,直接用WP做了另一个blog
终于来了。恩。
恭喜,俺最常来的就是你的BLOG.
放点0day上来俺就更喜欢了。
不错的恭喜下
恭喜…
BS…
link加上target=”_blank”
@amxku 你是说哪里的链接?
再次的曰你一下..
速度不是很理想..
54楼上的,速度的确不如以前在师傅服务器上放着的时候了。
我说呢,咋变样了呢
持续关注..
以前的风格放出来吧。
@老臧 嘿嘿,程序都换了。
@badkid 谢谢。
@可酷可乐 等我想想我原来的程序都修改了哪些地方,然后整理下就发出来。
呵呵,凑个热闹!
这个wordpress我用着还是不舒服! 就用过几天!
速度确实不是很好! wairi一下!
@purple 用习惯了就好了,速度不如以前。
不错的东西,谢谢!
@xgo 不用这么客气,我自己记录下,同时也方便可能用到的朋友。
鬼仔,你QQ多少?有些问题请教一下!
看了不顶不厚道-楼主继续努力
俺也想从LBS转WP,可惜俺技术严重不过关,又怕麻烦,所以还是放弃了。:(
我在导入时,提示:DROP TABLE IF EXISTS `wp_categories` ;
这是什么原因呢?请问博主。
鬼仔为什么在isapi_write里写跳转article.asp?id=num 跳转到 archives/num.html不行呢,在.htaccess里我用过可以的.
各种折腾啊,呵呵