在nginx上访问控制器时,Codeigniter出现404错误


404 errors with Codeigniter on nginx when accessing controller

我为我的网站使用Codeigniter,根网站工作得很好,它有一个登陆页面,但是我有一个开发部分位于/var/www/domain.com/www/dev/, /var/www/domain.com/www/是根(登陆页面存储在那里)。

现在,当我去domain.com/dev,我的编码器网站工作正常,但当我加载一个控制器,例如domain.com/index.php/search它给我一个404错误。

domain.com的错误日志中显示:

2011/10/02 02:03:37 [error] 17042#0: *568 open() "/var/www/domain.com/www/dev/index.php/search" failed (20: Not a directory), client: xx.xx.xx.xx, server: domain.com, request: "GET /dev/$

现在我完全不知道为什么它会这样做,以及如何解决这个问题。我怎么能停止这种情况,并删除"index.php"删除URL,因为Codeigniter教程只包含apache的重写规则,这是无效的nginx。

我相信codeigniter使用前端控制器模式,它将使用重写规则将所有请求重定向到index.php。

由于重写规则是针对apache而不是nginx的,服务器实际上是在寻找一个名为search的目录,该目录位于另一个名为index.php的目录下,以此类推。

我对nginx没有太多的经验,但我相信这篇博文可以帮助你想出nginx的重写规则。