wordpress在不同域名间的迁移

忙乎了一天终于把这个blog从另外一个域名、另外一个服务器迁移过来了。迁移的过程是比较痛苦的,因为我一开始把迁移想得太简单了。这怪我想当然,前几天wordpress版本升级给我的印象太方便了,只要把文件一股脑上传就可以,因此我以为迁移也只要把文件一股脑拷贝、数据一股脑导出再导入就可以啦。 我一股脑做好迁移以后,敲入新网址,满怀信心期待出现的页面没出现,确切地说是一片空白(我原以为最糟的情况也就是出现带有一些broken links的页面再作调整)。费了好久才查出是memory_limit值太低,这时我已经把wordpress那几个table的数据 delete/import了好几个来回了。 虽然这次迁移费了点时间,但总算有了经验:不要相信那些所谓wordpress data migration插件,甚至连wordpress内置的export/import也不好用(export/import仅适用于给数据做备份和恢复)。wordpress(2.3.1版)内置的export/import至少有以下缺点: 不能自动转换域名 不能自动转换document root 不能导入option import采用web upload,自然文件大小受到upload_max_filesize限制。 import后个别category出现了两次(原因不明) manage uploads丢失了thumbnails的链接 我认为最好的办法是,把原数据库里的数据导出成sql格式,用文本编辑器在这个sql文件里做两次查找和替换,新老域名和新旧document root各做一次(文本格式就是好啊,给人一种看得见摸得着的感觉,踏实)。然后在新数据库导入这个sql文件就可以。只要网站的directory structure保持不变,我相信这就是wordpress blog迁移要做的全部工作。

发现一个wordpress不够体贴的地方

熟悉以后才知道它/他/她的缺点,这就是为什么离婚总是发生在结婚后。 我在了解wordpress的过程遇到这么点小麻烦:custom permalink structure为/%post_id%/%postname%/(其实seo并非非得这么设置,但这个设置是我们价值£750每月的引擎优化专家推荐的,姑且采用)。 我事先知道这个blog所在的服务器目前没加载mod_rewrite,因为这不是我的独立服务器,所以我并不能想加载什么模块就可以加载的。但我暂时不想为了贪图mod_rewrite就把blog转移到另一个服务器,至少在这个blog正式上市之前不想。保持一个主服务器在美国,一个大副服务器在德国,以后再弄一个二副服务器在英国当地,或者把大副二副换一换,这是我理想中的格局,不把鸡蛋放一个篮子里嘛。 但我有个毛病,明知不可为而为之,就是想看看什么后果。结果我知道了:后果很严重。一旦修改了permalink,wordpress就自动生成一个.htaccess,不管服务器是否支持,也不管blog是否真的需要这个.htaccess。由于服务器没有加载mod_rewrite,所以发生500 server error。于是我删掉了.htaccess,然后在后台想把permalink改回Default,wordpress不够体贴的地方就暴露出来了:只要一提交permalink的值,不管这个新值是什么,wordpress就自动生成.htaccess,这样我的服务器马上就500,php肯定就中止执行了,数据库就无法更新了。这个鸡先生蛋、还是蛋先生鸡的问题,我最后是直接操纵数据库才解决的(wordpress的数据库结构还是挺清晰的,我没看什么资料,凭着直觉找到wp_options table,再找到permalink_structure,删掉option_value就可以了)。 说了一个wordpress的缺点,作为补偿,我再说一个我感觉到的体贴,总是在细致之处。当初安装wordpress,ftp原码以后,installation要求把wp-config-smaple.php改名为wp-config.php,虽然改名不算麻烦,我还嘀咕它为什么不直接替我做了这件事。最近一次升级才让我理解它的良苦用心——升级时只要一股脑ftp所有文件,不用担心设置文件的备份恢复等等。我以前一直都不太愿意升级,就是怕备份恢复这些琐事,所以wordpress新版本出了很久了,可能新版本的新版本都已经出了n多个了,我才折腾了一下。有了这次无痛升级的过程,我以后一定会升级得很勤快的。 题外话:wordpress的permalink基于url rewrite,要求服务器服务器是apache+mod_rewrite,适用性小。要是谁能开发一个plugin,基于404错误捕获做permalink,一定会在广大小空间业主群里有市场。不过我不会想着去做这件事,从基于url rewrite到基于404,技术上是种倒退。要向前看,不是向钱看。

向google学习

Google不但在技术上领先,在marketing方面也是专家。现在g级容量的邮箱已经不稀罕了,google肯定比我更清楚这一点,但google的方案实在是高明——它不在容量上跟其它服务商攀比(就算给你5g的容量又怎么样?你还是会问万一我的邮箱存满了怎么办?如果你还是想着以防万一(其实哪有那么多万一),那你一开始肯定想找一个容量(在当时)最大的服务商。Google肯定不想落入与hotmail,yahoo的容量攀比之风,但google也不想落后,于是搞出一招容量扩增计划:而且每分每秒都在扩增。这招挺有意思,我粗略关心了一下邮箱增长速度,还挺快——每天扩增25m,如果新增的空间都被往来的邮件填满、往来内容都是文本的话,你一天24小时不吃不睡看右肩也看不完这些邮件,所以根本不用担心容量以后会不够用。 至少在可以预见的将来是不用担心的。

养兵千日,用兵一时

我是站在一个用户的角度发表一点感想:好软件一定要很体贴,就如winrar这样。 我猜想大家使用winrar已经很多年了,但少有人用到这个功能:create zip files in batch(为一批文件创建一个个单独的压缩文件)。最近我就有这样的需求,按惯例先问google怎么办?google给我的前几个链接不是让我去下载一个叫batch zip的软件,就是去装一个batch files plugin。 为一个简单的功能要装这个装那个?我有点嫌烦,压缩软件应该带这个功能吧,我这么想。果然,winrar有“单独压缩”选项(好好找找,嘿嘿)。 好软件不一定要很庞杂,但一定要有一些功能深藏闺中,一旦需要,信手拈来,不必为一点小功能再让用户去找plugin…如果用户选择装个plugin来解决问题,那还不算很糟;如果用户选了个别的软件来达成目的,那原软件很可能从此吃素咯。

流式布局

自从读了Jakob Nielsen的«Homepage Usability»一书以后,我特别fancy fluid layout,这成了我做任何网站一定要达到的目标之一。经过一段时间的研究,我对fluid layout也算小有所成,最有心得的部分就是不借助table,不依赖javascript,在有不定宽度的图片情况下,做图文混排的fluid layout。 我也很在于其他层面的usability,因此每遇到user friendly的东西,我总要赞叹一番。新版本的wordpress,堪称website usability的典范,但它的default theme竟然没有采用fluid layout,不禁让我唏嘘。于是我准备发挥一下我的专长,同时也为open source贡献一份绵薄之力,就改掉它的fixed layout。 我花了点时间看了一下style.css,大致知道要怎么去改进它啦。现在大家看到的页面只是我搞了测试以后的中间产品,四个角都没对齐,莫怪。剩下的事情就是要裁减背景图片,做个拉门,然后就差不多了。但我有个毛病:难题在一团乱麻的状态我的战斗力很强,有了头绪以后反而懒得去落实了。 这个差不多了的style.css何时能变成最终成品,我也不知道。 要不,你来donate我一下?

谁都不重要,我最重要?

今天老板跟我谈一个新产品的开发,我们需要为这个产品在中国范围内寻找新供应商。我是公司里唯一以国语为母语的员工,所以这个重任就落到了我头上,尽管我的job descriptions里并没有新产品开发或新渠道开发这一项。 这确实是个很了不起的产品,在它没有正式上市之前,我也不好在这里透露什么。但我们对新供应商要求很高:他们必须得通过一系列认证。别的先不说,就我所知,其中的brc/aib认证就是一道槛,中国已通过此类认证的生产商如凤毛麟角。于是,我的目标就是从中发掘新供应商,或者说服潜在供应商去通过认证。 老板很重视这个项目,不过他语气有点夸张——他说,即使我们这个屋顶漏水了(前一阵子是漏水,花了大价钱reroof),或者Dave(我的一个同事,销售部的顶梁柱)一病不起了,这些都不重要,你(就是我)只要把这个项目做好就可以了。 晕了晕了,不过我还是挺开心的。

等待新特性:导入、导出、重置Start Page的设置

先看看我的Apps Start Page: Google确实是天才,无论Apps,Gadget,或是iGoogle都是巨作;Start Page把这些组合在一起,巨作中的巨作。但是美中还是有不足:未登录用户的Start Page setting保存在Cookie里,删掉Cookie就可以重置Start Page;登录用户的Start Page setting肯定是保存在google的某个数据库里,google暂未为导入、导出、重置Start Page的设置提供任何方便。 我已经发了一个suggestion给google team: Recently I deployed Start Page of Apps. It is marvellous to combine the functionality of igoogle and apps! Each signed-in account can have different igoogle setting, that’s great. However, we can’t copy igoogle setting between accounts. We can’t reset the setting to… Continue reading 等待新特性:导入、导出、重置Start Page的设置

Google是怎么知道我的?

我们公司每个月花费£750+VAT在搜索引擎优化上,虽然我认为这钱花得也大手大脚了一点,但翅膀没硬之前,我还是不发表评论为好。最近SEO的重点转向blog,我正好也借此机会学习。因为公司优化的是WordPress,所以我也用WordPress做这个blog,这样在公司的学习成果可以马上学以致用。 在学成之前,我是没想让google来爬我这个blog的,可是最近我发现Google竟然已经开始cache我的blog,我觉得很奇怪。我没有为这个blog建任何inbound links,没有robots.txt,没有sitemap.xml,没有analytics,也没向搜索引擎提交。难道是我的hosting server有子目录自动提交的功能?

Unpublish Posts in WordPress

明眼人一看就知道我这个blog用的是wordpress。说来也让人失望,我还没怎么深入wordpress,wordpress就暴露给我一个缺陷:无法在后台unpublish posts,或者说undo publish。 问了一下google,google说这个功能还在wordpress的wishlist上,真想不通,这么一个常用的unpublish功能,竟然还没开发出来。我只好自己动手了:先发了一个test post,save但不publish,看看数据库里是怎么保存它的。 好了,答案一下就出来了,unpublish其实非常简单:posts表里一条记录就是一个post,找到对应的记录,把post_status从”publish”改为”draft”就可以了。