用CodeIgniter托管麻烦

时间:2011-05-18 01:45:25

标签: codeigniter live bluehost

我是CI新手。这段时间我一直在我的localhost上做我最近的项目。我选择CodeIgniter和Doctrine作为我的数据库框架。

我当地的主机规格是:

Windows 7 Wampserver 2.0

我的apache中也启用了rewrite_module。

从一开始,我的本地主机上的CI和Doctrine一切正常。我设法完成了我的项目,很高兴等待将我的第一个项目移植到现场并将其上传到我的bluehost帐户的子目录中。

在传输文件之前,我通过填写所需的值来更改config.php和database.php。

但是在我将我的文件(以及.htaccess)上传到我的托管解决方案提供商后,我只能看到404错误(这是来自codeigniter类,而不是我的托管解决方案页面)。我一直这样。我尝试了多种选择,但我无法弄清楚这是什么。我确信index.php正在被调用,当它尝试路由到默认控制器(在我的情况下是'home')时,由于某种原因它会失败。

我的localhost中的目录结构

PathtoWamp-> WWW-> mysitefolder

我的实时网站中的目录结构

public_html(这是我的根文件夹) - > mysitefolder

我还可以看到已经使用我的实时服务器启用了rewrite_module(多数民众赞成我的托管解决方案bluehost说,我猜这是真的)

由于我已经过了最后期限,我想知道一个解决方案。如果你们中的任何人有任何想法,请告诉我。

提前致谢。

此致 Ashok Srinivasan。

2 个答案:

答案 0 :(得分:1)

我找到了问题的根源。这一次不是.htaccess,不是httpd.conf而不是bluehost,它不是上帝,不是真正的罪魁祸首是Mr.CodeIgniter。

如果您查看系统/库中的Router.php,那么您将在第88行找到一行

$this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : strtolower($this->routes['default_controller']);

如果您注意到三元结束时他们强制对控制器名称执行strtolower操作。我删除了这个方法,只需在此处使用原始名称,方法是将行更改为此。

$this->default_controller = ( ! isset($this->routes['default_controller']) OR $this->routes['default_controller'] == '') ? FALSE : $this->routes['default_controller'];

好的,但这里有什么大不了的?是的,这在现在很有意义。我的本地服务器是在Windows上安装的wamp,我的生产服务器是在Unix机器上托管的。因为众所周知,Windows是一个软弱的家伙,并不关心案例敏感性,但Unix非常特别相反。

我项目中的控制器名称都是大写模式,真正的问题来自于此。我也去了我的routes.php,它位于application / config中,我纠正了这个问题的问题。

最后,我现在可以托管我的网站了。感谢所有在阅读我的问题之后对此表示满意的人。

此致

Ashok Srinivasan。

答案 1 :(得分:0)

我在httpd.conf中遇到了同样的问题

你需要找到像这样的一行

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>

将其更改为

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride All
</Directory>

这就是我所需要的一切