【问题标题】:Codeigniter Controller 404 & routing issuesCodeigniter 控制器 404 和路由问题
【发布时间】: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


【解决方案1】:

看来你需要设置base_url (application/config/config.php):

$config['base_url'] = 'http://domain.com/foo/bar';

【讨论】:

  • 对不起,我应该在我的帖子中说明这一点,但我已经正确设置了 base_url。一件事可能是问题的一部分——安装位于 domain.com/foo/bar 但“真实路径”是 domain.com/foobar/bar (我不确定用什么来重写文件夹名称,但我假设 htaccess 或其他类型的服务器配置)只是为了澄清上述内容:“实时”URL 显示并工作为:domain.com/foobar/bar 但在 FTP 中,第一个文件夹实际上是名为“富”
猜你喜欢
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2013-12-16
相关资源
最近更新 更多