将Drupal博客迁移到emlog平台

今天终于完成了这个蛋疼的任务,因为实在受不了Drupal的复杂和缓慢了。顺便为了测试一下新浪SAE的效果,就干脆搬到了这个平台上。

下面说一下转换数据、跳转地址的方法。首先,Drupal版本为6.22(就是说版本5和7我都不保证能行),emlog是4.1.0的最新版。要求有一个安装好的emlog,以及Drupal数据库的完整备份,还需要一个支持phpMyAdmin的MySQL数据库做数据中转(我是在本地架设的)。

1. 将Drupal数据库导出,并导入到本地数据库中。假设Drupal的表前缀为drblog_。

2. 安装好emlog,进入后台的“数据”,选择备份到本地。然后将备份也导入本地同一个数据库。假设emlog的表前缀为emlog_。

3. 在本地数据库中执行下面的SQL语句:(我SQL学的很渣,不要吐槽我- -)

INSERT INTO `emlog_sort`(`sid`, `sortname`) 
SELECT `drblog_term_data`.`tid`, `drblog_term_data`.`name` FROM `drblog_term_data`
WHERE `drblog_term_data`.`vid` = (SELECT `drblog_vocabulary`.`vid` FROM `drblog_vocabulary` LIMIT 0,1);
INSERT INTO `emlog_blog` (`gid`, `title`, `date`, `content`, `excerpt`, `author`, `sortid`, `type`, `views`, `hide`)
SELECT `drblog_node`.`nid`, `drblog_node_revisions`.`title`, `drblog_node`.`created`, `drblog_node_revisions`.`body`, `drblog_node_revisions`.`teaser`, 1, `drblog_term_node`.`tid`, 'blog', `drblog_node_counter`.`totalcount`, IF(`drblog_node`.`status`=1, 'n', 'y')
FROM `drblog_node`, `drblog_node_revisions`, `drblog_term_node`, `drblog_node_counter`
WHERE `drblog_node_revisions`.`nid` = `drblog_node`.`nid` AND `drblog_term_node`.`nid` = `drblog_node`.`nid` AND `drblog_node_counter`.`nid` = `drblog_node`.`nid`;
UPDATE `emlog_blog` SET `emlog_blog`.`comnum` =
(SELECT COUNT(*) FROM `drblog_comments` WHERE `drblog_comments`.`nid` = `emlog_blog`.`gid`);
INSERT INTO `emlog_comment`(`cid`, `gid`, `pid`, `date`, `poster`, `comment`, `ip`)
SELECT `cid`, `nid`, `pid`, `timestamp`, `subject`, `comment`, `hostname` FROM `drblog_comments`;

注意:这里根据我的环境编写的,即只有一个用户ID=1,只有一个Taxomony(分类)ID=1,将日志最初发表时间作为日志时间,将评论标题作为emlog中的评论者名称。

4. 将执行完毕的库导出为SQL备份,并按照emlog备份的格式添加头尾、修改好之后,用emlog数据还原即可。

UPDATE: 更新一下用.htaccess将旧地址替换为新地址的代码,这里假设新博客地址就是本博客(t.du9l.com),替换的内容包括分页、文章、分类和作者页面。

  # Moving to SAE
  RewriteCond %{QUERY_STRING} page=([0-9]+)
  RewriteRule ^.*$ http://t.du9l.com/page/%1 [L,R=301]
  RewriteRule ^node/([0-9]+)$ http://t.du9l.com/post/$1 [L,R=301]
  RewriteRule ^blog/([0-9]+)$ http://t.du9l.com/author/$1 [L,R=301]
  RewriteRule ^taxonomy/term/([0-9]+)$ http://t.du9l.com/sort/$1 [L,R=301]
  RewriteRule ^.*$ http://t.du9l.com/ [L,R=301]
  # Moving to SAE

5 thoughts on “将Drupal博客迁移到emlog平台

    1. @WTZ:因为360是渣渣,至于验证码嘛……其实那个法子不太管用,用了之后还是好多垃圾广告,貌似是人工发的样子……

回复 清风刀客 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注