Page 404 CodeIgniter index.php

时间:2013-01-08 03:31:47

标签: php codeigniter controller routes http-status-code-404

我对Codeigniter有这个问题,不幸的是,本网站关于此问题的其他帖子对我没有帮助,或者我没有很好地应用它。

编辑*添加屏幕截图:

enter image description here

enter image description here

我的目录结构:

  • 调度程序(主文件夹)
    • 系统
      • 应用
        • 配置(文件夹)
        • 控制器(文件夹)
          • BS.php
    • 以及其他文件夹和文件
    • 的index.php

正如标题所说,当我输入

http://mysite.com/folder/index.php

输出未找到的页面404。但是,当我输入 http://mysite.com/scheduler/index.php/BS 时,它显示“这是一个BS文件”,因为我使用下面的代码回应它。

BS.php

 function index($flag = NULL)
{

 echo "This is a BS File.";
 }

routes.php文件

$route['default_controller'] = "BS";
$route['scaffolding_trigger'] = "";

的index.php

error_reporting(E_ALL);

$system_folder = "system";

$application_folder = "application";

if (strpos($system_folder, '/') === FALSE)
{
    if (function_exists('realpath') AND @realpath(dirname(__FILE__)) !== FALSE)
    {
        $system_folder = realpath(dirname(__FILE__)).'/'.$system_folder;
    }
}
else
{
    // Swap directory separators to Unix style for consistency
    $system_folder = str_replace("\\", "/", $system_folder); 
}

define('EXT', '.php');
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
define('FCPATH', str_replace(SELF, '', __FILE__));
define('BASEPATH', $system_folder.'/');

if (is_dir($application_folder))
{
    define('APPPATH', $application_folder.'/');
}
else
{
    if ($application_folder == '')
    {
        $application_folder = 'application';
    }
    define('APPPATH', BASEPATH.$application_folder.'/');
}

require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;

最后,我的 config.php

$config['base_url'] = "http://" . $_SERVER['HTTP_HOST']. "/scheduler/";
$config['secure_base_url'] = "https://" . $_SERVER['HTTP_HOST']. "/scheduler/";

$config['index_page'] = "index.php";

$config['uri_protocol'] = "REQUEST_URI";

现在这样做几天,仍然没有给出一个过程。很高兴得到任何帮助。

4 个答案:

答案 0 :(得分:6)

我终于弄明白了怎么做, 如上所述,请记住目录结构?

在Controller文件夹中,我有这个BS.php文件。然后,如果我没有弄错,那就是文件的区分大小写。这可能是由于域名不支持文件名中的大写字母,我在本网站的其他问题的某些答案中读到了该字母。

简而言之,我将 BS.file 改为 bs.file 。它有效。

修改

此外,在 routes.php 中,我将BS更改为bs。

答案 1 :(得分:0)

我看到你发布了index.php的代码。我不认为你有需要,因为你应该尝试不在那里编辑任何东西。

你的根文件夹中有.htaccess吗?

每当我开发任何CI应用程序时,我总是保留这个.htaccess文件。

http://pastebin.com/nTsThZHv

答案 2 :(得分:0)

您应该从index.php文件中删除代码,并在Web应用程序的根目录中创建.htaccess文件。 (即应用程序,系统文件夹存在)。

这是我的重复答案: Codeigniter issues with paths in localhost (XAMPP)

请在项目文件夹中创建.htaccess文件并写:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

</IfModule>
<IfModule !mod_rewrite.c>
 ErrorDocument 404 index.php
</IfModule>

您无需在配置文件中的base_url中定义:

$config['base_url'] = ''; // blank it.

答案 3 :(得分:0)

就我而言,这是委托人的案件问题,但与@ Brain的答案略有不同。 这是因为我使用名为&#34; AxxxxBxxx.php&#34;的默认控制器。我总是遇到404错误。 在我将其更改为&#34; Axxxxbxxxx.php&#34;并更改相应的类名。 它有效。

BTW,我使用codeigniter 3.0。希望它有所帮助!