CodeIgniter:在Live Server上找不到404页面

时间:2015-02-25 00:46:07

标签: php codeigniter

我一直在使用CodeIgniter开发一个小型Web应用程序。在本地测试后,我把它放在我的网络服务器上,让其他人测试一些功能。在导航到网站时,我得到: -

  

404找不到页面错误页面

在本地计算机上查看时,所有内容都会加载并完美运行。

这是我上传到public_html目录的内容:

application directory
system directory
assets directory (my assets for the site)
index.php

所有这些都在public_html目录中。就像我说的,它确实给了CodeIgniters 404错误页面,所以我知道它至少看到了CodeIgniter。我还尝试将$config['base_url']中的config.php更改为我的网址。更改或将其留空时出现相同的错误。 我检查了我的路线,所有这些似乎都是正确的。在我的本地机器上导航到它时,一切都很好。

我目前还没有使用.htaccess文件

有关我应该尝试的任何建议吗? 非常感谢!

11 个答案:

答案 0 :(得分:85)

您正在使用带有OOPS概念的MVC。所以有一些规则。

1)您的班级名称(即:控制器名称)应以大写字母开头。

例如:你的控制器名称是冰淇淋'。那应该是' cecream'

在localhost中,它可能不是强制性的,但在服务器中它将检查所有这些规则,否则它无法检测到正确的类名。

答案 1 :(得分:14)

将文件的名称和类名的第一个字母更改为大写。

档案: controllers/Login.php

上课: class Login extends CI_Controller { ... }

文件名作为类名,应以大写字母开头。此规则也适用于模型。

https://www.codeigniter.com/user_guide/general/models.html

答案 2 :(得分:12)

我遇到了同样的问题。改变控制者的第一个字母大写有帮助。

答案 3 :(得分:11)

您可以在这里查看很多内容。我会和你一起过去。

<强> 1, 从localhost(htdocs)迁移到实时服务器时,您需要确保支持您使用的PHP版本。

测试一下: 创建“ index.php ”文件并仅添加以下行。

<?php phpinfo(); ?>

只需按' Ctrl + F '并搜索“版本”。你会发现PHP版本。它可能需要5.3+才能支持功能。

<强> 2, 检查 config/config.php 并查看下面的$config['base_url']$config['index_page'] 屏幕截图

enter image description here

我建议将网站名称放在基本网址示例中:'www.site.com/' 但删除index.php进行清理。

第3, 最可能的原因就是这个

很可能是.htaccess文件。这是我的Elliot Haughton制作的。 将它放在根目录中,如果需要,可以更改第9行'RewriteBase /'。

<IfModule mod_rewrite.c>
RewriteEngine On
# !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
# slashes.
# If your page resides at
# http://www.example.com/mypage/test1
# then use
# RewriteBase /mypage/test1/
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin 
ErrorDocument 404 /index.php

(请确保您使用上述两个部分。编辑器将其分成两部分,但上面的所有代码都是一个.htaccess文件。)

如果上述情况都不奏效,请给我一个喊叫声,我们将逐步介绍它。

答案 4 :(得分:11)

我已经解决了这个问题,请进行一些更改

1-所有控制器类名称应以大写字母开头。我的意思是第一堂课应该是资本。例如,我们有类名为Pages的控制器

所以它应该是Pages not pages

2-将控制器类页面保存为 Pages.php 而不是pages.php

所以首字母必须是大写

对于模型,模型类首字母应该是大写,并且还将模型类保存为 Pages_model.php 而不是page_model.php

希望这能解决你的问题

答案 5 :(得分:5)

我被困在这大约一天我只是用大写字母重命名文件名“Filename”并重命名控制器类“Classname”。它解决了这个问题。

**class Myclass extends CI_Controller{}
save file: Myclass.php**
  

应用/配置/ config.php中

$config['base_url'] = '';

答案 6 :(得分:3)

解决了这个问题。更改您的班级名称,使首字母大写。所以,如果你有类似'MyClass'的东西,请将其改为'Myclass'。将它应用于文件名和类名。

答案 7 :(得分:2)

我在本地和生产服务器上这样做:

路线:

$route['default_controller']   = 'Home_controller';

文件名称:

    控制器文件夹中的
  • Home_controller.php
  • 模型文件夹中的
  • Home_model.php
  • 视图文件夹中: Home.php

Home_controller.php:

       class Home_controller extends CI_Controller {

           public function index(){

              //loading Home_model
              $this->load->model('Home_model');

              //get data from DB
              $data['db_data']  = $this->Home_model->getData();

              //pass $data to Home.html
              $this->load->view('Home', $data);
           }
       }

Home_model.php:

       class Home_model extends CI_Model {
       ...
       }

案件不再存在问题:)

答案 8 :(得分:1)

尝试在php启动后在根文件夹index.php中添加以下行:

ob_start();

这对我有用。

答案 9 :(得分:0)

如果您使用过root/application/core/MY_Loader.phpMY_Parser.php个文件,请检查MY_Router.php文件夹文件。

如果是这样,请尝试从文件夹中删除上述文件,并检查是否有任何区别。实际上,只需保留默认的index.html文件即可清理该文件夹。

我发现这些文件导致问题路由到正确的Controller函数。

希望有所帮助!

答案 10 :(得分:0)

我能够通过更改

来修复类似的错误
http://ip-address/html/ci3-fire-starter/htdocs/index.php/

在application / config / config.php第26行。