【发布时间】:2015-10-04 16:16:15
【问题描述】:
所以我过去有构建 codeigniter 应用程序的经验,所以我对框架稍微熟悉
然而,我之前的任何时候都直接从根 (http://domain.com/) 开始工作
我目前正在尝试开发和部署一个将托管在子文件夹中的应用程序 (http://domain.com/foo/bar)
我对路由有很好的了解,但我不确定发生了什么。去http://domain.com/foo/bar 加载没有问题,但是任何时候我尝试添加一个新路由,比如http://domain.com/foo/bar/myController——我得到一个404。服务器本质上是在尝试加载http://domain.com/foo/bar/myController/index.php而不是使用框架控制器——
这是某种服务器配置或设置吗?我必须对 htaccess 做些什么吗? (过去我所要做的就是从 URL 中清除 index.php)
为了记录,问题不在于控制器损坏/丢失/命名不正确,如果我将默认控制器设置为 myController 页面将毫无问题地加载。
我有点困惑,正在寻找任何建议。提前致谢。
【问题讨论】:
-
您是否启用了 Apache 的 mod_rewrite?如果是这样,您的应用程序根目录(即 CI index.php 旁边)中是否有一个与 github.com/bcit-ci/CodeIgniter/wiki/Mod-rewrite 匹配的 .htaccess 文件?最后,您是否允许在 CodeIgniter 目录中的 httpd.conf 文件中进行覆盖?
-
嘿--是的,我在 CI 安装的根文件夹中有确切的 .htaccess 文件。奇怪的是,我在 phpinfo() 输出中看不到 mod_rewrite 模块,但我相信我们已经使用 htaccess 文件在重写之前更改了 URL。我还检查了我常用的开发服务器(我有工作的 codeigniter 应用程序)并且在“定位”mod_rewrite 模块时遇到了同样的问题——关于 httpd.conf 文件,我并不完全有信心。我知道这是一个运行 apache 的 Windows 服务器,如果这有所不同的话,但目前我只有 FTP 访问权限,没有终端/SSH 访问权限。
-
如果你真的有那个确切的 .htaccess 文件,那么你需要更改 .htaccess 文件中的 RewriteBase 指令。我认为,您的 RewriteBase 应该是指向您的 CodeIgniter index.php 的 URL。如果你的 CI index.php 可以从
domain.com/foo/bar/index.php访问,那么你的 RewriteBase 应该是/foo/bar/。再说一遍,RewriteBase 指令也可以是 CI 根目录,因为它在服务器的文件系统上命名。 Apache docs 不是特别明确。
标签: php .htaccess codeigniter codeigniter-2 codeigniter-routing