在Godaddy的主机上配置CodeIgniter

之前在CodeIgniter上部署过一个小的CodeIgniter的应用,参考了这篇文章,当时顺利的完成了部署运行的任务。主要是因为在Godaddy的虚拟主机上使用rewrite模块产生的问题,原因不知道,只知道一种解决问题的办法。主要的步骤为:

在config.php里修改配置,使用QUERY_STRING的方式来解析URL

$config['uri_protocol'] = "QUERY_STRING";

然后,修改.htaccess文件,使其内容为如下所示:

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

这样,某个请求,如http://www.example.com/blog/view/123 ,实际上会被解析成http://www.example.com/index.php?blog/view/123 ,但是,假如我使用的请求必须通过GET方法传参数呢?这种解决方案就不能解决问题了。如http://www.example.com/index.php?blog/view/123?from=1009&author=bbiao ,这个时候就无法通过parse_str($_SERVER['QUERY_STRING'], $_GET);的方法来获得GET的数据了。但是我们可以观察到$_SERVER['REQUEST_URI']里保存了blog/view/123?from=1009&author=bbiao的值,OK,解析一下这个数据就可以了。代码如下:

$arr = explode(‘?’, $_SERVER[‘REQUEST_URI’]);
parse_str($arr[1], $_GET);

另外说一句,由于CI里是把$_GET的数据清空的,所以才有了以上的这些说法,CI本身是不推荐使用GET来传递参数的,但有时候又不得不用,比如使用OAuth的时候,别人回调你的接口的时候都是这样传的,你能怎么办呢?事情总有解决办法的,现在我的程序在Godaddy上跑的一切正常。

本文目前尚无任何评论.

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">