转载请保留链接: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的后台—设置—撰写中将”自动将
和
等表情符号转换成图片显示”打开
- 替换LBS_DB_ALL.sql中的日期(不然导入mysql之后,文章和评论的发表时间都会是00:00,我这里是这样的),注意空格:
” 上午 ” —> ” ”
” 下午 ” —> ” “ - 替换没有转换干净的UBB,因为我发现某条UBB分割开来放在LBS数据库blog_Article表中的log_content0和log_content1中的时候,转换之后就会出现问题,比如说
<code>(.*?)</code><!–more–>(.*?)/[//code/]
替换为:
<!–more–><code>/1/2</code>/
http(.*?)<!–more–>(.*?)/[//img/]替换为
<img src=///”http/1/2///” />[email这部分我是手动替换的,因为我这里只有两个[b]替换为<b>
[/b]——–</b> 这两个标签主要是评论中的没有被转换/
(.*?)/[//file/]替换为
<a href=///”/1/2///” target=///”_blank///”>/3</a>
/[/*/](.*?)<br />
替换为
<li>/1</li>[*]替换为<li>
[/list]替换为</ul>
/
(.*?)/[//url/]替换为:
<a href=///”/1/2///” target=///”_blank///”>/3</a>
这条,如果是 放在了log_content1中,那么转换之后就会变成 这样的形式,只是在log_content0后加了 <!–more–>标签,那么我们需要用EmEditor中的正则替换以下部分: - 挽救内链,这个正则我写不好,所以就用了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!
写完之后一看很长,也懒得检查有没有语法错误或者错别字了,大家如果发现有问题的地方直接在下面评论,我会进行修改。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论