1

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

我有一个使用以下目录结构设置的 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 服务器上运行没有问题。

4

1 回答 1

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> 

我希望这能够帮到你。

于 2012-12-28T12:15:56.587 回答