从zblog转换到wordpress的几方面综合考虑

linker12年前 (2008-08-16)网络日志435

zblog更新到1.8以后,在登陆后台和新建文章提交时,都会发生很严重的超时现象,并且会引起IIS的百分之百现象很长一段时间,这和zblog的1.8版本合成了索引重建功能有关,这样在每次操作后,虽然不用再重新索引重建了,但每次操作的任务量自然增大了;这种情况下,如果文章量小时,比如几百篇以下,估计会好些,或者来说,独立服务器会好些,比如月光博客那样的zblog爆发户,我的独立服务器自认也不比月光的独立服务器差多少,但二千多篇的日志量,如此操作,超时就如此惨样,真是实在难以理解官方所谓的“空间太垃圾”之说,真的是很不理解。

上述问题呢,也考虑了,在以前日志中也分析了,和发展zblog的sqlserver数据库关系不大,是和生成静态化有关,在我个人立场来讲,希望zblog能够在下个版本时,能够就此改善一下。毕竟,如果文章量大的,排除采集因素,就只有这些zblog老用户才会如此坚持,如果不重视老用户的意见,发展就太没有远方了。但等待这样的渺茫实在很茫然和痛苦,因此,转wordpress萌生。

另外,在模板方面,这个模板是早期zblog的很平常的一个共享模板,但月光实在是太“旗帜”化了,N多访问sir都在问我,模仿得不错,冤枉啊,我对模板制作绝对是门外汉,只是偶尔间和月光的同样爱好,才造成了现在这样的相似,不过需要提到的一点是,当时模板的升级时,有个在firefox浏览器下的css问题,是得过月光的一点点提示,月光实在很忙,去过几次邮件,都只是匆匆一复,很难得,也很珍贵!wordpress模板丰富多彩,千变万化,花果山寨的友情帮助模板制作更是让我觉得很是标新立异,wordpress的支持力量和资源,似乎更宽广,更适合我这样一个代码迷茫者。另外,多说一点,月光现在也有自己的wordpress英文博客,也不是没有人担心月光的博客动向,如果哪天月光博客也转移到Wordpress,按zx与williamlong的关系,双方都不应该放弃zblog这么优秀的作品,Z-Blog走到了十字路口,时至今日,看来zblog已经走出来了,今时今日,自zblog已经把模板和插件分离得非常好了。想想月光对zblog的专注和投入,也确实有些感叹!

自从用wordpress建立英文博客以后,感觉更坚定了一些,用了一个免费的wordpress模板,这个模板对adsense的优化也太好了些吧,表现很优异,当然,这和英文博客的单价高是有些关系的,在此方面,也证明了wordpress在seo等方面的有效性,在并没有提交google管理员工具时,收录已经很优异,并且是默认的地址链接,这个表现,愈加促使转wordpress。

说实在的,真的是舍不得这么些年的zblog情节:对zblog的模板已经比较熟悉了,很多人觉得难以添加的广告问题,对我来说,非常的游刃有余了;现在zblog的模板和插件都非常优秀而易于管理了,这么些年,搜索引擎已经熟悉了林网博客的索引目录,转向wordpress再怎么完善,也得有个适应期。想到此,我似乎觉得,我是不是更应该再支持一下,坚持过2008,到明年再决定,也不迟。

转wordpress,不外乎利用月光的首先使用Z-Blog导出到Movable Type的小程序将Z-Blog的数据转换为Movable Type格式的文件,然后从WordPress里导入该文件即可,这个zblog导出movable type的程序,说是放到zblog的插件目录下,但我放至插件目录下以后(zblog1.8版本),在后台插件管理中发现不了这个插件,暂时郁闷中。听小天说,有个Movable Type1.3版本转着很有效,我也没找到;似乎在月光博客上看到,有个可以转zblog1.8版本的转换程序,但搜索了下,也没找到,如果稍后找到可用的,再提供实际链接。

另外,从晨钟暮鼓那里也发现了一种转换方法,从Z-Blog完美转移到WordPress

这里仅转引一些单篇文章部分:

从Mysql.com下载MySQL Migration Toolkit,然后把Zblog的access DB转换成MySQL数据库,有点需要注意,转换前先用Mircosoft Access删除blog_Article表的log_Intro和log_Content两个字段

接着导出转换好的MySQL数据库,其实就需要一个表,blog_Article,把这个表用PHPMyAdmin导入到WP的安装数据库中,待用;

简单的两行SQL命令搞定问题,同样在PHPMyAdmin中完成:

UPDATE `wp_posts` SET `post_name` = (SELECT `log_Url` FROM `blog_article` WHERE `wp_posts`.`post_title` = `blog_article`.`log_Title`) WHERE `post_name`="";

UPDATE `wp_posts` SET `post_name` = (SELECT `log_ID` FROM `blog_article` WHERE `wp_posts`.`post_title` = `blog_article`.`log_Title`) WHERE `post_name`="";

暂时放下转与不转的选择,再来分析一下,转wordpress需要考虑的几点问题:

转换后的文章地址链接、目录地址链接、关键字链接、文件下载链接,以及文章中的有些特殊标记,比如引用等,这些利用月光的转换小程序,虽然大部分都能转换过来,但文章一多,细节的修改任务量就太重了;只能导一个tag,月光的博客,有了图文混排,他用的是一个tag,我一般用多个tag,丢弃如此多的tag,遗憾哪。

转换后有关静态化方面,月光还有篇文章专门说明了目录和关键词的修改设置

首先保证两个系统中目录的ID以及TAG名都完全相同,然后修改.htaccess文件,在文件中加入以下两行:

RewriteRule ^catalog.asp?cate=(.*)$ ?cat=$1

RewriteRule ^catalog.asp?tags=(.*)$ ?tag=$1

这个TAGS是以WordPress 2.3的TAGS系统为例,使用其他系统的也可参照类似修改。

在apache主机中,比如很多wp站用的国外空间中,利用自定义永久链接结构,可以定义地址为:/archives/%post_id%.html,这样文章的链接就和现在的zblog文章地址比较一致了,不会丢失大部分的搜索引擎流量。但在iis中,却又是一大遗憾,如果需要无缝转换,是得费些功夫的,今晚,我找了几个小时,终于发现了几个方法:

第一个方法是利用强大的rewrite转换规则,这要用到一个iis静态映射组件,http://www.helicontech.com/isapi_rewrite/,这是一个国外的组织专门为IIS写的ISAPI Rewrite组件,非常类似于Apache的mod_rewrite。有免费版与收费版!实现WP在IIS中的rewrite功能只需要下载一个它的组件就OK了,但也得需要wp针对iis下的规则,也确实早就有人写了这个规则

因为原来的是http://xxxx.com/post/1.html之类的链接,转为WordPress后,所有的链接都失效了,只能重写规则,在后台永久链接里填上/post/%post_id%.html,本规则不完善,更新中

# # WordPress rewrite rules
# # Design by Kevin
http://zxsv.com
# # /post/%post_id%.htmlRewriteRule /tag/(.*) /index\.php\?tag=$1RewriteRule /(about-kevin|about-copyright)/ /index\.php\?pagename=$1RewriteRule /post/category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?category_name=$1&feed=$2

RewriteRule /post/category/?(.*)/ /index\.php\?category_name=$1

RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?author_name=$1&feed=$2

RewriteRule /author/?(.*) /index\.php\?author_name=$1

RewriteRule /rss.xml /wp-feed\.php/\?feed=rss2

RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2

RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2

RewriteRule /([0-9]+)/?([0-9]+)?/?$ /index\.php\?p=$1&page=$2

RewriteRule /post/([0-9]+).html /index\.php\?p=$1 [I]

RewriteRule /page/(.*)/ /index\.php\?paged=$1

RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&page=$5

RewriteRule /([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&day=$3&page=$4

RewriteRule /([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&page=$3

RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&feed=$5

RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/trackback/?$ /wp-trackback\.php\?year=$1&monthnum=$2&day=$3&name=$4&tb=1

#以下是fGallery的规则

RewriteRule /photo/?([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?$ /wp-content/plugins/fgallery/fim_photos\.php\?$1=$2&$3=$4 [I]
附/%year%%monthnum%%day%/%postname%/规则

# # WordPress rewrite rules# # Design by Kevin http://www.bluefeel.com# # /%year%%monthnum%%day%/%postname%/RewriteRule /blog/tag/(.*) /blog/index\.php\?tag=$1RewriteRule /blog/(about-kevin|about-copyright)/ /blog/index\.php\?pagename=$1

RewriteRule /blog/category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /blog/wp-feed\.php\?category_name=$1&feed=$2

RewriteRule /blog/category/?(.*)/ /blog/index\.php\?category_name=$1

RewriteRule /blog/author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /blog/wp-feed\.php\?author_name=$1&feed=$2

RewriteRule /blog/author/?(.*) /blog/index\.php\?author_name=$1

RewriteRule /blog/feed/?$ /blog/wp-feed\.php/\?feed=rss2

RewriteRule /blog/comments/feed/?$ /blog/wp-feed\.php/\?feed=comments-rss2

RewriteRule /blog/page/(.*)/ /blog/index\.php\?paged=$1

RewriteRule /blog/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /blog/index\.php\?year=$1&monthnum=$2&day=$3&name=$4&page=$5

RewriteRule /blog/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /blog/index\.php\?year=$1&monthnum=$2&day=$3&page=$4

RewriteRule /blog/([0-9]{4})/([0-9]{1,2})/?$ /blog/index\.php\?year=$1&monthnum=$2&page=$3

RewriteRule /blog/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /blog/index\.php\?year=$1&monthnum=$2&day=$3&name=$4&feed=$5

RewriteRule /blog/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/trackback/?$ /blog/wp-trackback\.php\?year=$1&monthnum=$2&day=$3&name=$4&tb=1

上述规则还没有具体测试,虽然是2006年版本的规则,但zblog这几年发展,网站结构变化很小,因此,照搬用应该问题不大。用了静态映射组件,有了静态规则,转换后在iis下用wp应该比较满意了。

第二种方法是在阿江的博客主机群里面,一位hitigon朋友提示的一个网址,很专业的说明了这个问题

这也是一个iis组件wp-url-rewriting.dll 下载地址:http://code.google.com/p/wp-url-rewriting-on-iis/downloads/list,本地下载:wp-url-rewriting-2.1-win32.zip

这是位好心的牛人专门为工作于iiS中的WP写的ISAPI rewrite组件,用它您根本就不用写rewrite规则,您只需要将其加载到您的ISAPI中,然后进wp后台定义自己的permalinks即可。 假如你用的是虚拟主机的话,您可以联系您的空间商让其为您添加上这个组件。从此您的WP也可以完美rewrite了。

另外,该文章也说明了编码问题,需要特别注意一下,以免走弯路:

当我们定义好permalinks后,可能您会发现,我们点击中文标量的文章链接时说找不到网址。

例:http://www.phplamp.org/2008/06/php%e4%b8%ad%e7%9a%84%e6%96%87%e7%ab%a0/

这是因为:WP的编码为utf-8,而这篇文章的URL中Slug(上链接红色部分)编码为gbk。然后WP取得文章Slug后,通过它来查找文章就会找不到!因为编码不同呀。

更改方法:
wp-include/classes.php中(44-50行)

if ( isset($_SERVER['PATH_INFO']) )
$pathinfo = $_SERVER['PATH_INFO'];
else
$pathinfo = ”;
$pathinfo_array = explode(‘?’, $pathinfo);
$pathinfo = str_replace(“%”, “%25″, $pathinfo_array[0]);
$req_uri = $_SERVER['REQUEST_URI'];

替换为下(转换$_SERVER['PATH_INFO']和$_SERVER['REQUEST_URI']的编码):

if ( isset($_SERVER['PATH_INFO']) )
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], ‘utf-8′, ‘GBK’);
else
$pathinfo = ”;
$pathinfo_array = explode(‘?’, $pathinfo);
$pathinfo = str_replace(“%”, “%25″, $pathinfo_array[0]);
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], ‘utf-8′, ‘GBK’);

这个操作的意思就是:将Slug的编码由GBK转换为utf-8(您也可以用iconv,或是其它的函数来代替mb_convert_encoding)。

 今晚先研究到这里吧!第一步都没转成,一切只限于理论化的分析,具体实用与否,实践才能得知。写得比较乱,大量都是从各位先行者那里学习来的。还是那个想法,转与不转,真还没下狠心,但愿这个zblog的运行状态,别把我惹急了!该死的超时……,这篇文章发时,我铁定得事先复制一下,以免超时了,哭都没人睬你咧!!

最后再多说一点zblog的优化问题,这里有一篇文章分析得很有道理:灵活配置zblog静态日志的Url,不要把文章都放在一个目录里面,比如我的文章是都放在archives目录,zblog实在多目录配置也很方便,我使用这么多年,也没有进行过这方面改动,也确实缺乏创新精神哪!对于静态化方面,点石论坛的几位高人,特别是乐思蜀也强调过,现在的动态化网站,一样可以收录良好,相比较内容原创、网站合理的结构等方面来讲,静态化反而变得很其次了。

标签: zblogwordpress

评论列表

linkers
linkers
12年前 (2008-08-30)

http://www.steveluo.name/wordpress-url-rewrite-isapi_rewrite,这里提到了一个urlrewrite插件,也比较好用,不知道和上述说的有重复没有;http://www.binaryfortress.com/Files/WordPressURLRewrite/WordPressURLRewrite_v1.0_32bit.zip

taker
taker
12年前 (2008-10-18)

你好,能不能加我qq详细说下这个方法
我不会用。48665455
不能静态化wp没什么意思啊。谢谢

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。