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

twi*_*n08 32 php codeigniter

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

404找不到页面错误页面

在我的本地机器上查看它时,一切都会加载并完美运行.

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

application directory
system directory
assets directory (my assets for the site)
index.php
Run Code Online (Sandbox Code Playgroud)

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

我此时也没有使用.htaccess文件

关于我应该尝试什么的任何建议?
非常感谢!

小智 90

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

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

例如:你的控制器名称是'icecream'.应该是' 知道'

在localhost中它可能不是必须的,但在服务器中它将检查所有这些规则,否则它无法检测正确的类名.

  • 只需注意:**类名**和**文件名**都需要是标题大小写(以大写字母开头).因此,如果类名是'Icecream',则文件名必须是'Icecream.php',否则,CodeIgniter将抛出404错误. (7认同)
  • 我认为服务器上不会检查所有这些规则。这可能是由于服务器运行Linux这很简单的事实,Linux对文件名区分大小写... (2认同)

Pol*_*Zen 16

将文件名和类名的第一个字母更改为大写可以正常工作.

文件: controllers/Login.php

类: class Login extends CI_Controller { ... }

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

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


Nia*_*gan 12

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

1, 从localhost(htdocs)移动到实时服务器时,您需要确保支持您使用的PHP版本.

要测试这个:创建一个' index.php '文件并仅添加以下行.

<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

只需按" Ctrl + F "并搜索"版本"即可.你会发现PHP版本.它可能需要5.3+才能支持功能.

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

在此输入图像描述

我建议将网站名称放在基本网址示例中:' 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]
Run Code Online (Sandbox Code Playgroud)

<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
Run Code Online (Sandbox Code Playgroud)

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

如果以上都不起作用,请给我一个喊叫,我们将逐步介绍它.


小智 12

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


小智 11

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

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

所以应该是Pages而不是pages

2-保存控制器类Pages Pages.phppages.php

所以首字母必须是资本

同样的模型,模型类第一个字母应该大写,也模型类保存为 Pages_model.phppage_model.php

希望这能解决你的问题


小智 5

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

**class Myclass extends CI_Controller{}
save file: Myclass.php**
Run Code Online (Sandbox Code Playgroud)

应用/配置/ config.php中

$config['base_url'] = '';
Run Code Online (Sandbox Code Playgroud)