标签 typecho 下的文章

前段时间将博客从独立服务器迁移到了 Godaddy 的主机上,顺便从 Magike 换到了 Typecho。期间先将 Magike 迁移到 Godaddy 的主机上测试,然后将本地安装好的 Typecho 迁移到 Godaddy 的主机上测试,最后在 Godaddy 主机上全新安装 Typecho,整个过程始终被一个诡异的问题所困扰,即重写无法生效。

这个问题源于 Godaddy 主机环境使用的 Apache 版本和 Magike、Typecho 本身使用的 Rewrite 机制。经过自己反复折腾和反复骚扰 70 同学后均没有彻底解决问题,最后易先生眼看自己的博客也受到了影响,于是才亲自动手搞定。

这个问题是这样的:

首先,Godaddy 主机的 Apache 版本是 1.3.33。假设 Magike 或 Typecho 没有开启伪静态,在处理类似 https://www.xuchao.org/index.php/archives/1/ 这样的地址时,服务器会在
/index.php/archives/1/ 这个目录里找 index.php 然后来执行,并不会带上 /archives/1/
这个参数,所以点到哪都是首页。若 Magike 或 Typecho 开启了伪静态,浏览器则会接收到 404 错误。

要解决这个问题,大致有两种方案:
1、改变 Magike 和 Typecho 的 URL 传参形式,及程序获得参数的方法;
2、通过升级 Apache 版本等方式,解决服务器对 Magike 和 Typecho 的 URL 的识别。

很显然,在一个租用环境中无法做到第二点。因此只能考虑调整 Magike 和 Typecho 的 URL 解析的函数。

最后问题是这样解决的:

1、Magike

在根目录 index.php 的 include('./core/core.php'); 这行前面加上如下代码:

$baseInfo = @explode('?', $_SERVER['REQUEST_URI'], 2);
if (is_array($baseInfo))
{
        $_SERVER['REQUEST_URI'] = $_SERVER['REQUEST_URI'];
        $_SERVER['PATH_INFO'] = $baseInfo[0];
        unset($_GET);
        if ($baseInfo[1])
        {
                $getInfo = @explode('&', $baseInfo[1]);
                foreach ($getInfo as $v)
                {
                        $getInfo2 = @explode('=', $v);
                        $_GET[$getInfo2[0]] = $getInfo2[1];
                }
        }
}

如果启用了伪静态,则需要修改 .htaccess 文件如下:

RewriteEngine On
RewriteBase /
RewriteRule index(\.)php/(.*) /index.php?/$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

2、Typecho

在根目录 index.php 的 Typecho_Plugin::factory('index.php')->begin(); 这行前面加上上面一样的代码,若需伪静态,.htaccess 文件也一样。

值得庆幸地是,以上问题仅存在于 Magike 和 Typecho 0.6 以下(含)版本,最新的 Typecho 0.7 正式版已完全解决此问题。

问题解决,立此存照。感谢易先生的帮助与 70 同学的辛勤耕耘。

2013 年 4 月 13 日更新:关闭本篇文章评论,垃圾太多。

首先感谢 hema 兄的提醒,我这就更新一篇上来。

其实 Typecho 项目组建已久,前期 beta 版本一直不敢做小白鼠;后面有了 release,却一直忙于其他事情,迟迟借口没时间换。说来惭愧,眼看 70slukefen明城IPFox 等同学相继用上了 Typecho,我依然无动于衷。

在一直以来内心强烈谴责自己的同时,趁今晚睡前赶紧把 Magike 换了,诸如链接、feed 地址等的内容将尽快修正过来。

因为自有独立服务器的缘故,所有也没花多少时间,前后加起来十分钟都不到。以至于 blacksheep 同学刷新页面后惊讶地以为搞错了网站,仔细一看,没错,只是换了皮……

还是那句话,忙碌、没时间,都是借口。人们善于给自己找借口、找理由、留后路,并且成为了习惯。

另外关于多位仁兄在我这篇文章上的留言均已收悉,感谢你们。鉴于你们的打击,我已开始找资料自学以期有所提高。之前的图片也会根据需要做一定程度的修缮。

最后解释一下最近发文频率降低的原因。我觉得最大的问题是找不到专业的定位,你看明城同学在他博客上挥洒 JavaScript 的精华,他女人老佛爷在她博客上随意书写和谐生活的每一个篇章,而其他同学就更专业了,譬如这个 GFans、这个驴友、这个米农,不一而足。因而我实在不忍心在博客上扯淡耽误大家的时间、伤害大家的眼球、影响大家的心情、谋杀大家的生命。

若你有 idea 希望我写一些什么,欢迎留言。多谢。

上周单位有个同事生日,不仅收到了鲜花、蛋糕,还有一些有意思的小玩意。说来也巧,这个小妹妹的生日也恰好是 6 月 26 日。更为神奇的是年月日一个数字都不差,这让我多少有点吃惊,在现实中遇见同年同月同日生毕竟是稀少。

晚上请我们吃饭,在去往酒店的路上,我又一次把手机落在出租车上。这是我第二次在天津将手机落在出租车上了,也是第二次有惊无险地拿回了手机。天津人大都友好、热情,所以出租车司机也很少例外。席间心有余悸,于是我又拿出相机来练手了——虽说到天津这么久以来都没怎么拍过,技术不但没有进步反而倒退得厉害。

一段看图不说话时间。

- 阅读剩余部分 -

本来已经打算不顾个人形象,发文骂人了。后来为了服务器上行问题的事情忙了一个晚上,现在想想算了,何必自毁形象呢。

发生在昨天(1 月 23 日)的故事,主角很强大、很神秘,他就是传说中的“相关部门”。

昨天快到中午的时候收到一个短信,服务器监控系统自从使用几个月以来破天荒地第一次发短信提醒我线路可能出现问题。马上试图打开自己的博客,失败;ping 到服务器,超时。

之后的第一反应就是打电话。先联系了服务提供商,对方说人在外地,给了机房值班人员的电话,让我自己联系。和机房的人联系上后被告知因为服务器上存在未备案的网站而被强行断网。我暂时不想问太多,恢复服务要紧。问他哪个域名有问题,他说稍等让他查一下。稍等了半天给我答复,他这里查不到,又给了另外一个人的 QQ 号码,让我找他查询。到这里我有点纳闷了,为什么是一个 QQ 号码,人家没有电话吗?机房的人说:你就和他 QQ 联系吧。

行,我不和你计较。加上那人的 QQ 号码,有意思的是,那人的 QQ 签名很有意思:“有事直奔主题,忙!”。于是我留言说明来意,对方效率还不错,一会就发来一个表格,然后抛下一句话:“处理好了留言给我。”

我打开表格,我就傻眼了。列表中我的服务器上存在问题的网站只有一个,而且居然是一个博客系统开发团队的网站而已。看图:

因为 Typecho 项目是以 70 同学为首、且我自己参与其中的一个技术性项目,于是马上联系了 70。70 听完我说明的情况表示 typecho.net 的确没有备案,并且无意备案;发生这样的事情,只能被迫转移到国外去了。然后我答应尽快协助迁移备份数据,就挂了电话。

下午 14 点,我解除了 typecho.net 域名的绑定。然后我就以为没事了,继续和易先生折腾服务器上行的问题去了。

下午 17 点 56 分,易先生告诉我服务器上网通 IP 依然不通。于是我再一次接通机房电话,值班人员说这次清理未备案网站工作本身就是“相关部门”下达的“旨意”,我服务器的网通 IP 要等“相关部门”统一解封了。好吧,我继续忍。

晚上 20 点 47 分,易先生又给我带来一个坏消息:电信线路再次不通。我的忍耐终于上升到了一个不能再上升的新的高度,随即致电机房。机房说:“你的网站还是能打开的呀?”我无语,域名的解析没有修改,访问网站当然能正确达到服务器上;问题是我已经取消了域名指向目录的绑定,现在访问到的只是服务器的默认页面而已。我质问机房的人“你不会直接访问一下 IP 看看是不是也一样吗?”机房的小伙子好像很委屈,说他们只是接到“相关部门”的通知而已,并且建议我删除网站的内容就行了。我继续无语,能这么随便搞么。随即我把 70 同学的域名绑定到了一个空目录上,然后终于通过了“相关部门”的“御审”,嗯,问题解决。

整个过程中我不断收到服务器监控系统发来的报警邮件:

其实昨天一整天我似乎真的没有愤怒,相反我觉得很无奈,还很可笑。你的政绩工程名下,居然是以牺牲无辜人的利益为基础的。什么严打、反低俗,都是借口,还是冠冕堂皇的理由?

突然想到牛博网被和谐的事情。我终于说不出话,并且不想再说话了。

一个搞技术的、一个从事博客系统开发的技术团队的网站,居然可以在没有任何预先通知的情况下被冠以未备案的帽子而直接拔掉服务器网线。这,就是发生在和谐天朝的活生生的事情。

乏了,睡觉。

Typecho 是一个开源的跨平台博客系统,在 GPL Version 2 许可证下发行。它基于 PHP(需 PHP5 以上版本)构建,它是轻量级的、面向对象的,并抛弃了繁琐的 MVC 构建方式,将所有的功能单纯地封装为一个模块(也就是Widget),使其更加适合开源的并发开发模式。

关于 Typecho 更多的介绍,请参阅我之前的一篇文章和官方博客相关文章

目前我们发布的是一个 0.3 alpha这里是下载地址,70 同学已经用上 Typecho 了)。既然是预览版,就一定存在很多不足。我们欢迎用户向我们提交这些问题,或是任何需求。也可以参与 Typecho 的论坛讨论。

以下引用 sluke 同学慷慨激昂的陈词:

如果你是 PHP 爱好者,看看代码,一定不会让你失望; 如果你是设计师,看看后台设计和 CSS,一定不会让你失望; 如果你是狂热的开源粉丝,看看 Typecho 使用的 GPL 开源协议,一定不会让你失望; 如果你是一个普通的博客程序用户,可以忽略本帖,因为一个襁褓里的程序不适合你……

无论如何,对该项目有兴趣的朋友请关注 www.typecho.org