标签 70 下的文章

前段时间将博客从独立服务器迁移到了 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 日更新:关闭本篇文章评论,垃圾太多。

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

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

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

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

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

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

案发时间:2008 年 7 月 19 日晚 19 时 30 分许。

案发地点:杭州市文三西路 638 号小尾羊 11 号包厢。

作案人员:传说中的 70 同学及其在雅虎口碑工作的朋友、feelinglucky 同学(传说中的淘宝前端工程师明城)及其夫人陆小姐(亦称老佛爷)、新钻网 ppeng 同学、LSD 刘先生(我们曾经的同事,目前是老佛爷的同事),及本报记者。

作案工具:和谐的人民币、可爱的口碑卡、牢固的牙齿。

作案动机:70 同学来杭参加雅虎口碑的面试。

作案经过:请欣赏高清、无码、激情的下述图片。

有了口碑卡,您还能忍住美食的诱惑吗?

喝的是杭州的酒:

70 同学特写(应其本人强烈要求,加盖薄码):

中间那位猥琐少男……嗯,您猜对了,一看就知道是淘宝的风格。左边那位是 lucky 的夫人老佛爷:

70 和 lucky 大谈特谈技术,还不停地用手比划:

两人一起达到了某个高潮,请看 70 同学的一阳指:

两个技术疯子的故事,已经给我们这些外行人幼小的心灵造成了深深的伤害。连老佛爷也只能用手托着下巴,深深地表示无奈:

从左往右依次是:70 那位在雅虎口碑工作的朋友、LSD 刘先生(您瞧这帅气的发型):

LSD 刘先生给 lucky 点烟,两人十分激动,本记者也忍不住激动地抖动了一下:

抽的是杭州的烟:

不知道是谁吃剩下的不知道是什么动物的什么部位的肉:

全文完毕,感谢关注,欢迎发言。