我在之前的文章里说过,我的 blog 之前用的是 MT 系统来架设的,不过长期以来我对 MT 失望了,所以接着换了主机的契机,我把 blog 程序换成了 WP。但 MT 的默认 URL 是以 .html 结尾的,而 WP 默认的 URL 是目录形式的。所以我从 MT 导入的旧文章的链接都失效了。
我在那时候其实有个简单的方法可以解决这个问题,就是把 WP 的 Permalink 设定成 .html 结尾的。我测试了确实有效,不过我不想用这种方法。原因是我过去的共享空间是用 Apache 做 web 服务器的(似乎共享空间都这样),而我在 VPS 上使用的是 Lighttpd。在 Apache 下设定 URL 转向是通过 .htaccess 文件来设定的,而 Lighttpd 是在设定文件里面配置的。我这是第一次用 Lighttpd(另一个 VPS 上的 Nginx 也是第一次),所以不想放弃这个机会,想把旧的 URL 全转向到新的上面。
中间我抽空略微看了一下文档,觉得不难。这段时间其实我脑子一直昏头了。我脑子里想的是着 mod_rewrite 相关的文档,因为在 Apache 里面就是通过 rewrite 来设定转向的。结果我在 url.rewrite 部分里面弄来弄去,把位置也调来调去,就是不工作。直到今天,我看了一下系统的文档,才找到了 url.redirect。在配置文件里相应的部分加上这么一句就好了:
url.redirect = ( "^/blog/(.+)\.html$" => "/blog/$1/" )
一下子完成之后,真是不胜唏嘘啊。
MT 对于文章的 slug 管理,我感觉挺混乱的。slug 里面分隔单词的不论是减号还是下划线,生成文章时统一变成减号,所以我过去用 MT 的时候就没有注意这一点,想用减号就用减号,想用下划线就用下划线。结果这写文章导入到 WP 里面后,那写下划线就直接输出出来了,非常不好。我正好安装了自动生成 sitemap 的插件,于是就在 sitemap 里搜索,找到包含下划线的 URL,手动在后台改了 slug。
这样这个 blog 就基本上配置的差不多了。唯一的缺陷就是过去的 500 多条留言没了。不过我是没精力再管了,我现在对与用户的访问也不看重了,所以就没有再试着继续恢复留言,而是直接去数据库把 wp_comments 表给请空了了事。这样总算可以清净的写一阵子文章了。