【发布时间】:2012-12-28 11:31:38
【问题描述】:
我怀疑这可能是网络服务器配置发生了变化,我的托管服务提供商没有告诉任何人,但无论如何......
我有一个使用以下目录结构设置的 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:/ wamp/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 看起来不错,但是如果我尝试执行登录(通过 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 服务器上运行没有问题。
【问题讨论】:
标签: php apache .htaccess codeigniter