我怀疑这可能是已经发生的网络服务器配置更改,而且我的托管服务提供商没有告诉任何人,但无论如何......
我使用以下目录结构设置了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服务器上运行没有问题。
答案 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>
我希望这可以帮助你。