Codeigniter只能访问默认路由控制器

时间:2012-12-28 11:31:38

标签: php apache .htaccess codeigniter

我怀疑这可能是已经发生的网络服务器配置更改,而且我的托管服务提供商没有告诉任何人,但无论如何......

我使用以下目录结构设置了Codeigniter实例:

/root
   /codeigniter
        /app
        /sys
   /www
        /sandbox
            /ci
                /js
                /css
                /img
                .htaccess
                index.php

因此在index.php中,我有以下变量:

$application_folder = '../../../codeigniter/app';
$system_path = '../../../codeigniter/sys';

这些是相对定义,因为它是一个共享的托管服务提供商,但它看起来似乎是这样工作所以我不认为这是问题(在WAMP中我明确定义了那些文件夹路径,例如c:/瓦帕/ CI /应用)

在config.php中,我设置了以下变量:

$config['base_url'] = 'http://******.co.uk/sandbox/ci/';
...
$config['index_page'] = '';
...
$config['uri_protocol'] = 'AUTO';

和www / sandbox / ci中的.htaccess文件设置如下:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

直到几天前,这一切都运行良好,但是,我在圣诞节前取代了一些公平的文件,可能在没有意识到的情况下意外地覆盖了一些东西。此设置在我的WAMP服务器上正常工作,但在我的实时服务器上失败如果我尝试访问任何不在routes.php中定义的控制器中的任何功能。

我的routes.php看起来像这样:

$route['default_controller'] = "home_controller";
$route['404_override'] = '';

home_controller看起来很好,但是如果我尝试做一些像login(通过表单POST处理到auth_controller / login)这样的事情,它就会失败了404.我在home_controller中没有任何附加功能。

从将日志记录阈值设置为4,我没有任何兴趣,ChromePHP只是建议它找不到控制器的路径。

mod_rewrite似乎正在工作,因为如果我向.htaccess文件中添加任何明文,我会收到服务器错误500,而且index.php重写正在运行。我也将rewrite_short_tags设置为TRUE。

我已经尝试了config.php中的所有uri_protocol类型,似乎没有任何区别,所以我觉得如果它是我做过的事情,我要么丢失来自routes.php的东西,要么我的.htaccess遗漏了一些东西。

任何想法都将不胜感激。就像我说的,整个设置在我的WAMP服务器上运行没有问题。

1 个答案:

答案 0 :(得分:3)

我认为问题在于你的htaccess。试试这个htaccess片刻..

<IfModule mod_rewrite.c>

RewriteEngine On

# Set the rewritebase to your CI installation folder
RewriteBase /sandbox/ci/


# Send everything to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule> 

我希望这可以帮助你。