CodeIgniter中开启PATH_INFO时mod_rewrite隐藏index.php的问题
发布于: August 1, 2009, 10:48 am 分类: PHP/MySQL 作者: Saturn
我曾专门写过一篇文章介绍如何使用mod_rewrite隐藏URL路径上的index.php,但在某种情况下如果你改变了URI寻址的方式,这份htaccess方案可能会失效。
在CodeIgniter中,当我将URI寻址方式从AUTO更改为PATH_INFO时,即:
$config['uri_protocol'] = 'PATH_INFO';
注:PATH_INFO的开启,是因为我希望通过$_GET来取值,而不是系统默认的POST方式。
在此情况下如何仍然使用以上.htaccess方案,结果将是:index.php顺利隐藏,但主控制器并不能正确的获取值。
解决方案如下,就一步:
去掉以下重写规则中index.php后面的问号即可。
RewriteRule ^(.*)$ /index.php?/$1 [L]
修改后的规则如下:
RewriteRule ^(.*)$ /index.php/$1 [L]
其他地方不变。
Why?
第一句话在index.php后加问号的意思是告诉Apache的mod_rewrite模块,处理请求时自动去掉index.php后的GET字符串,这显然与我的意图相悖。
4 个评论 »
August 10, 2009, 10:00 am
谢谢你在我博客上的建议,我已经把那个广告改变过来了,呵呵。不是太好看,不过过几天我还要重新把程序写一下的,呵呵。
还有,你博客上写的我很喜欢,会经常来看的,所以我把你加到我博客上的友情链接上了,这样访问方便一点。^_^
August 10, 2009, 11:30 am
@华晨
:)
August 12, 2009, 11:36 pm
呵呵,偶然发现了这个基于 CI 的博客系统,很不错,我已经加入 CI 案例中了,希望博主不要介意,呵呵,并欢迎多来 CI 中国交流心得体会,谢谢。
August 13, 2009, 6:29 am
@Hex
谢谢,当然不介意。
等我有时间,会将程序整理出来,然后发布给大家参考。CI似乎在国内还不够热门,但实际上用它做敏捷开发真的很不错。
回应此文
你也可以选择引用此文章.