昨天说到安装配置好了WordPress,下一步的工作就是尽量恢复原来的数据了。DlzM选择了重新开始一个全新的blog,而我也觉得原来的数据库非常混乱(我有数据洁癖),决定手工添加旧文章,至于以前的留言……再说吧。
一、恢复Blog数据
1、文章
数据库备份下来的部分,在本地开一个Apache+MySQL,装上WordPress就能看到了。我不仅没有用数据库导入的功能,而且也不想用WordPress自身的导入功能,因为上次备份的WordPress版本太旧,我不想升级数据库那样折腾(不要问我为什么,我有数据洁癖)。当然最主要的原因是我希望把所有的文章略加编辑——我去掉了所有的more标签(也就是说在Blog主页和RSS上,所有的文章都将全文显示),给每篇文章加上了tag并重新考虑了分类,给每篇文章重写了Slug,并且重新上传了所有图片、修改了图片地址——这都是为了一个全新的、干净的Blog。我觉得这些修改让我很满意,不知道各位老读者觉得如何(特别是全文显示)。最后一个原因是,我想重读自己的文章,很多东西,我真的不知道是自己写的……各位不妨试试看,读一读你两年前写的文章,看看是什么感觉。
没有备份下来的部分,经某人(因为我忘了到底是谁)提醒,从RSS阅读器中抓取,感谢classicning提供了一个抓虾的地址,但是由于当时我的RSS不是全文的,还是丢失了一篇文章:答plioild点名的文章。没办法……另外由于我所有的影评、散文相关的图片都上传到Yupoo了,所以也只丢了一幅图片:百合ID返璞归真的纪念截图。另外,我没有加入两篇旧文章,一篇是NOD32安装教程,一篇是百合工作室服务恢复,这两篇内容都过时了,要说纪念价值,比它们有纪念价值的也很多(当然,懒的上传那几十幅图片也是一个原因)。顺便一说,我想把校园网的NOD32升级服务器换成3.0的,又要写教程了……
2、留言
由于彻底地丢失了07年6月30日以后的留言、之前的留言我也无力全部手工恢复,于是只选择了其中比较有意义的一些,比如各位老朋友的第一次留言之类的,我冒充各位留了言然后修改时间(懒得进数据库改IP了,否则更真实),正是因为所有留言都是一个IP,WordPress说我发得太多,逼得我只能重新拨号上网换个IP才能继续留言……
3、其他
所有的选项都是我手动改的;所有的友情链接(WordPress把它们称作Blogroll)都来自我的鲜果导出的OPML。顺便一说,我认识的人,想交换链接的请随意留言。
二、修正域名指向
因为lilystudio.org这个域名的管理人是Rufev,让他把子域名指过来还需要一段时间(况且他还忘了这茬,又拖了一天),而我等不及域名改过来就恢复了数据,所以一开始Blog地址、帖子的Permalink和图片地址都是dlzm.ipower.com这个域名下的某个子目录,要修改这些是一个挺麻烦的问题;但更麻烦的是,IPower的控制面板根本没有一个国内主机那样写着“域名绑定“的选项,到底该怎么设置?于是新一轮的折腾开始了……
1、与域名设置的战斗
首先,我设想了让一个域名能指向一个虚拟主机的某个特定子目录的各种方法:
- 转移域名注册商(Registrar Transfer)
- 修改Name Server记录
- 转向(Redirect)
- “假想域名管理”(自创词汇)
第一种方法就是说把注册商转移为IPower,这是最彻底的方法,但这个域名不属于我,不可能把整个域名都转过来;第二种方法,是指修改这个域名的管理服务器,也就是”付费给A公司,在B公司管理域名“,国内很少有公司提供这种服务,国外很常见,我的STRATO直接在控制面板里提供了这样的功能(这是当然的,它的域名管理比IPower都要厉害,就是贵了点……),但基于同样的原因——域名不属于我,而子域名是不能单独修改NS记录的;第三种方法是指,在该域名现在的注册商的控制面板中,将域名Redirect过来到某个目录。这是常用的方法,实质上是域名指向注册商的某个专项页,再转移过来,有的域名商比如STRATO做得好,能隐藏转向,这样在地址栏都看不出问题。但这不是彻底的方法,速度、与WordPress的兼容上都有问题,严重的话会导致某些php程序根本不能使用;最后是我自己设想的一个办法,虽然控制面板里明确说了,要让一个域名指向这个虚拟主机的某个目录,必须是IPower管理的域名(也就是上面说的第一、二种方法)。但是我猜想,如果强行添加会不会有效呢?当然在真正有权管理的控制面板中(lilystudio.org的真正注册商),也要做一些修改。
- 修改该域名真正注册商控制面板中的设置,将域名的IP指向IPower提供的绑定用IP(和MySQL的主机一样,也藏在非常难找到的地方)
- 在IPower控制面板的Domain Pointing Manager中,添加一个域名lilystudio.org,指向我的blog的目录
- 如果你只拥有一个子域名(比如我拥有williamgates.liystudio.org),想要让它直接指向这个Blog,那么现在就已经完成了
- 如果你拥有整个域名(比如DlzM拥有dlzm.net),那么请在第一步中将整个域名而不是子域名指向IPower的IP,并且在第二步之后,继续在IPower中为dlzm.net添加子域名并且指向你要的目录。
- 修改DNS指向需要几分钟到24小时不等的时间才会传到你上网所使用的DNS;但是在虚拟主机控制面板这边的修改,瞬间生效
是的,一切就像实际上修改了Name Server一样,就像IPower在管理这些域名一样。当你把一个域名,不管是整个域名还是子域名指向IPower的IP,就等于授权它来管理这个域名,我不知道它到底是基于DNS的设置,还是基于服务器上的技巧(例如Apache的某种模块),但结果就是你完全可以在IPower这边顺利的使用了,就像域名在这里注册一样。对于我的域名来说,IPower认为*.lilystudio.org都归于我这个目录,但由于只有blog.williamgates.biz会被解析成IPower管辖下的IP,所以只有williamgates.lilystuido.org会转到我这个Blog来。我把这个方法称为“假想域名管理”,我推断绝大多数允许多站点(参看前面选购部分的对比)的国外虚拟主机,都可以并且应当这样使用。(这让我想到美国的长臂管辖,管判不管执行,只有财产到了美国境内(也就是域名指向了IPower管辖的IP),才真正受到执行)
2、与URL的战斗
域名指过来了,但是Blog里所有的URL都是旧的地址,所有链接都打不开,怎么办?
首先,在WordPress的Options-General,修改WordPress address (URL)和Blog address (URL)这两项为新的地址,这样所有的动态页面的链接都对了。
你点击文章,但是显示404,这是为什么?因为所有的Permalink都不正确,静态页面还需要修改。进入Options-Permalinks,点击那个“Update Permalink Structure”的按钮(我是偶然发现这个方法的),所有的rewrite规则都将被自动修改(当然,WordPress需要有写.htaccess的权限)。另外,如果你使用了WP-Cache或者WP-SuperCache插件(比如我),请关闭它再打开,它也会自动修改一遍.htaccess,并且请到它的设置页面去清除、重建所有的缓存。
最后是最艰难的,文章中的旧链接,数据库中旧的上载文件记录,怎么办?用phpMyAdmin打开数据库,搜索你的旧地址,你会发现他们基本上都在Post表中(我是这时候才知道,该死的WordPress没有上载文件表,所有通过它上传的文件都和文章混在一个表中,难怪我们的文章ID不一定连续……),于是我们执行这样的SQL语句:
UPDATE 表名 SET 字段名=REPLACE(字段名,'原来的内容','替换后的内容');
记得把你找到的所有含有旧链接的字段都执行一遍(不仅仅是content,因为还有图片的地址呢)。对于其他表中查找出的旧链接,总量一般不大、可能有特殊情况,所以建议手动一条条改(我只有一条)。
至此,不仅是WordPress本身,整个Blog已经重建完成,可以自如地使用了。下一集是与其他各种乱七八糟Bug的战斗……
Related posts:
Recent Comments