我在 Ghost 导入数据时(你的ghost博客地址/ghost/debug ),遇到提示 slug 长度不能大于 150 的提示。我看了一下 WordPress 导出的数据中,如果 slug 含有中文会被默认 urlencode,导致长度过大。
系统的默认提示为
“Property ‘slug’ exceeds maximum length of 150.”
我写了一个简单的 node 脚本处理这个问题:
var fs = require('fs'); //data.json是原来导出的文件 fs.readFile('data.json', {encoding: 'utf-8'}, function(err, data){ if(err) throw err; data = JSON.parse(data); data.data.posts.forEach(function(v){ v.slug = decodeURIComponent(v.slug); }); //data-new.json是处理后的文件,在Ghost后台导入该文件即可 fs.writeFile('data-new.json', JSON.stringify(data), function (err){ if(err) throw err; console.log('solved!'); }); }); 图片的导入首先将你Wordpress里的/wp-content/uploads目录压缩后,然后在 /var/www/content/images下新建一个目录名为wp-content,然后压缩包上传到 Ghost 所在的 /var/www/content/images 目录中,最后解压缩。
新的目录结果如下:
. ├── data │ └── README.md ├── images │ ├── README.md │ └── wp-content ├── plugins │ └── README.md └── themes └── casper然后就没有然后了,在上一步配置 nginx 的时候我们加入的
location /wp-content/ { root /var/www/content/images; }语句,意思就是请求 uri 包含 /wp-content/ 时,从 /var/www/content/images/ 中获取数据,举个例子。
原请求:
/wp-content/uploads/2014/01/abc.jpg
经过 nginx 处理,变成了:
/var/www/content/images/wp-content/uploads/2014/01/abc.jpg
这样图片就能顺滑的显示了。
原链接跳转我原来在 WordPress 中设置的链接形式是:
/%year%/%month%/%post_name%/
但是 Ghost 只支持:
/%year%/%month%/%day%/%post_name%/ (在Ghost后台设置)
或
/%post_name%/
两种,因此我配置了 nginx 对请求进行简单的跳转。
rewrite ^/(d+)/(d+)/(.*)$ http://linuxidc.com/$3 permanent;nginx 的跳转语法比较简单,都是基本的正则,你可以根据自己的需求进行调整。