CodeIgniter:在实时服务器上找不到 404 页面
CodeIgniter: 404 Page Not Found on Live Server
我一直在使用 CodeIgniter 开发一个小型 Web 应用程序。在本地测试之后,我将它放在我的网络服务器上,让其他几个人测试一些功能。导航到该站点时,我得到:-
404 Page Not Found error page
在我的本地机器上查看时,一切都加载并完美运行。
这是我上传到public_html
目录的:
application directory
system directory
assets directory (my assets for the site)
index.php
所有这些都在 public_html
目录中。就像我说的,它确实给我 CodeIgniters 404 错误页面,所以我知道它至少看到了 CodeIgniter。我还尝试将 config.php
中的 $config['base_url']
更改为我的 URL。更改它或将其留空时出现同样的错误。
我检查了我的路线,所有这些似乎都是正确的。在我的本地计算机上导航到它时,所有内容也加载得很好。
我现在也没有使用 .htaccess
文件
关于我应该尝试什么有什么建议吗?
非常感谢!
您可以在此处查看许多内容。我会和你一起过一遍。
1,
从 localhost(htdocs) 移动到实时服务器时,您需要确保支持您使用的 PHP 版本。
要对此进行测试:
创建一个“index.php”文件并仅添加以下行。
<?php phpinfo(); ?>
只需按“Ctrl + F”并搜索"version"。您会找到 php 版本。可能需要 5.3+ 才能支持功能。
2,
检查您的 config/config.php
并检查您的 $config['base_url']
和 $config['index_page']
下面的屏幕截图
我建议将站点名称放在基础 url 示例中:'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?/ [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 文件)。
如果上述 none 有效,请回复我,我们将逐步解决。
我遇到了同样的问题。将控制器首字母更改为大写有帮助。
您正在使用带有 OOPS 概念的 MVC。所以有一些特定的规则。
1) 您的 class 名称(即:控制器名称)应以大写字母开头。
例如:您的控制器名称是 'icecream'。那应该是'Icecream'
在 localhost 中它可能不是强制性的,但在服务器中它会检查所有这些规则,否则它无法检测到正确的 class 名称。
问题已解决。更改您的 class 名称,使 只有 第一个字母大写。因此,如果您得到类似 'MyClass' 的内容,请将其更改为 'Myclass'。将其应用于文件名和 class 名称。
将文件名和 class 名称的首字母更改为大写。
文件: controllers/Login.php
class: class Login extends CI_Controller { ... }
文件名与class名称一样,应以大写字母开头。此规则也适用于模型。
请检查 root/application/core/
文件夹中的文件是否使用过 MY_Loader.php
、MY_Parser.php
或 MY_Router.php
文件。
如果是这样,请尝试从文件夹中删除上述文件并检查是否有任何不同。事实上,只需保留默认 index.html 文件即可清理该文件夹。
我发现这些文件导致问题路由到正确的控制器功能。
希望对您有所帮助!
我在本地和生产服务器上这样做:
路线:
$route['default_controller'] = 'Home_controller';
文件名:
- 在 controllers 文件夹中:Home_controller.php
- 在 models 文件夹中:Home_model.php
- 在 views 文件夹中: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 {
...
}
案例应该不会再有问题了:)
我已经解决了这个问题,请稍作修改
1- 所有控制器 class 名称应以大写字母开头。我的意思是 class 的第一个字母应该是大写的。例如,我们有 class 名称 Pages
的控制器
所以应该是页面而不是页面
2- 将控制器 class 页面保存为 Pages.php
而不是 pages.php
所以首字母必须大写
型号相同,型号 class 首字母应大写,并将型号 class 保存为 Pages_model.php
而不是 page_model.php
希望这会解决你的问题
我被这个困扰了大约一天,我只是用大写字母重命名文件名 "Filename" 并重命名控制器 class "Classname"。它解决了问题。
**class Myclass extends CI_Controller{}
save file: Myclass.php**
application/config/config.php
$config['base_url'] = '';
我能够通过更改
来修复类似的错误
http://ip-address/html/ci3-fire-starter/htdocs/index.php/
在 application/config/config.php 行 26.
尝试在 php 启动后在根文件夹 index.php 中添加以下行:
ob_start();
这对我有用。
我一直在使用 CodeIgniter 开发一个小型 Web 应用程序。在本地测试之后,我将它放在我的网络服务器上,让其他几个人测试一些功能。导航到该站点时,我得到:-
404 Page Not Found error page
在我的本地机器上查看时,一切都加载并完美运行。
这是我上传到public_html
目录的:
application directory
system directory
assets directory (my assets for the site)
index.php
所有这些都在 public_html
目录中。就像我说的,它确实给我 CodeIgniters 404 错误页面,所以我知道它至少看到了 CodeIgniter。我还尝试将 config.php
中的 $config['base_url']
更改为我的 URL。更改它或将其留空时出现同样的错误。
我检查了我的路线,所有这些似乎都是正确的。在我的本地计算机上导航到它时,所有内容也加载得很好。
我现在也没有使用 .htaccess
文件
关于我应该尝试什么有什么建议吗?
非常感谢!
您可以在此处查看许多内容。我会和你一起过一遍。
1, 从 localhost(htdocs) 移动到实时服务器时,您需要确保支持您使用的 PHP 版本。
要对此进行测试: 创建一个“index.php”文件并仅添加以下行。
<?php phpinfo(); ?>
只需按“Ctrl + F”并搜索"version"。您会找到 php 版本。可能需要 5.3+ 才能支持功能。
2,
检查您的 config/config.php
并检查您的 $config['base_url']
和 $config['index_page']
下面的屏幕截图
我建议将站点名称放在基础 url 示例中:'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?/ [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 文件)。
如果上述 none 有效,请回复我,我们将逐步解决。
我遇到了同样的问题。将控制器首字母更改为大写有帮助。
您正在使用带有 OOPS 概念的 MVC。所以有一些特定的规则。
1) 您的 class 名称(即:控制器名称)应以大写字母开头。
例如:您的控制器名称是 'icecream'。那应该是'Icecream'
在 localhost 中它可能不是强制性的,但在服务器中它会检查所有这些规则,否则它无法检测到正确的 class 名称。
问题已解决。更改您的 class 名称,使 只有 第一个字母大写。因此,如果您得到类似 'MyClass' 的内容,请将其更改为 'Myclass'。将其应用于文件名和 class 名称。
将文件名和 class 名称的首字母更改为大写。
文件: controllers/Login.php
class: class Login extends CI_Controller { ... }
文件名与class名称一样,应以大写字母开头。此规则也适用于模型。
请检查 root/application/core/
文件夹中的文件是否使用过 MY_Loader.php
、MY_Parser.php
或 MY_Router.php
文件。
如果是这样,请尝试从文件夹中删除上述文件并检查是否有任何不同。事实上,只需保留默认 index.html 文件即可清理该文件夹。
我发现这些文件导致问题路由到正确的控制器功能。
希望对您有所帮助!
我在本地和生产服务器上这样做:
路线:
$route['default_controller'] = 'Home_controller';
文件名:
- 在 controllers 文件夹中:Home_controller.php
- 在 models 文件夹中:Home_model.php
- 在 views 文件夹中: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 {
...
}
案例应该不会再有问题了:)
我已经解决了这个问题,请稍作修改
1- 所有控制器 class 名称应以大写字母开头。我的意思是 class 的第一个字母应该是大写的。例如,我们有 class 名称 Pages
的控制器所以应该是页面而不是页面
2- 将控制器 class 页面保存为 Pages.php
而不是 pages.php
所以首字母必须大写
型号相同,型号 class 首字母应大写,并将型号 class 保存为 Pages_model.php
而不是 page_model.php
希望这会解决你的问题
我被这个困扰了大约一天,我只是用大写字母重命名文件名 "Filename" 并重命名控制器 class "Classname"。它解决了问题。
**class Myclass extends CI_Controller{}
save file: Myclass.php**
application/config/config.php
$config['base_url'] = '';
我能够通过更改
来修复类似的错误http://ip-address/html/ci3-fire-starter/htdocs/index.php/
在 application/config/config.php 行 26.
尝试在 php 启动后在根文件夹 index.php 中添加以下行:
ob_start();
这对我有用。