代码点火器,未找到 404 错误
Posted
技术标签:
【中文标题】代码点火器,未找到 404 错误【英文标题】:Code Igniter, Not Found 404 Error 【发布时间】:2015-02-20 07:36:48 【问题描述】:我的网站有问题。升级到 mysql 5.6 后,主机 povider 重新编译了 Apache 和 php。显然他们还升级了 WHM cPanel。
目前我的网站可以正常显示,但是当尝试登录时,它找不到请求的特定页面。
错误信息:
在此服务器上找不到请求的 URL /main/cek_login。 此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。
来自 cPanel 的错误消息:
[2014 年 12 月 22 日星期一 10:10:58] [错误] 文件不存在:/home/xxx/public_html/main [2014 年 12 月 22 日星期一 10:10:56] [错误] 文件不存在:/home/xxx/public_html/404.shtml
到目前为止我的分析:
CI 版本:2.2 PHP 版本:5.4.3.5 mySQL 版本:5.6.21 cPanel 版本 11.46.1(内部版本 4)
main -> 实际上是一个名为 main.php 的文件 cek_login -> 是 main.php 中的一个函数,用于对用户表中的记录进行验证。
文件夹结构如下。
/home
/application
/controllers
/main
/view
/login_view
/system
/assets
/cgi-bin
代码如下
<div class="loginForm">
<?=($_GET[ 'error'])? "<div class='alert'>$_GET[error]</div>": ""?>
<form class="form-horizontal" action="<?php echo base_url().'main/cek_login'; ?>" method="POST">
应用程序文件夹内的config.php $config['base_url'] = ''; $config['index_page'] = ''; $config['uri_protocol'] = 'REQUEST_URI'; -> 之前尝试过 AUTO,但没用。以前是自动
根文件夹中的.htaccess 重写引擎开启 RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php/$1 [L]
.htaccess 在另一个文件夹中 全部拒绝
routes.php $route['default_controller'] = "main"; $route['404_override'] = 'not_found';
我也尝试查看配置文件,并在发布之前尝试了很多技巧。
我怀疑是 base_url 函数或路由机制。我不确定。
我是 Code Igniter 或 PHP 的新人,也在服务器管理中。我的强项在于数据库。
请帮助缩小问题的根源。
最好的问候, 里德万
【问题讨论】:
查看other controllers are accessible
,如果有请发base_url
,htaccess
和路线。
【参考方案1】:
请检查您的 config.php
$config['base_url']
然后检查'routes.php',在下面添加一行
$route['main/(:any)'] = 'main/index';
然后,在控制器文件中添加登录检查。
// Login check
$exception_uris = array(
'main/cek_login',
'main/cek_logout'
);
if (in_array(uri_string(), $exception_uris) == FALSE)
if ($this->user_m->loggedin() == FALSE)
redirect('main/cek_login');
【讨论】:
已经解决了,原来.htaccess 文件被清空了!我不知道它是怎么发生的,它只是不知何故变成了空白。因此错误。在用我的本地设置检查之后,我知道这是罪魁祸首。感谢您的努力!【参考方案2】:只需上传一个测试文件并检查您的服务器目录的文档根目录。
1.创建文件info.php 2.写代码
<?php
phpinfo();
3.打开任意浏览器并输入http://www.yourdomain.com/info.php
如果正常,在info.php页面列出的信息中找到文档roon
如果 http://www.yourdomain.com/info.php 不起作用,请联系您的服务器支持团队进行修复。基本上是服务器配置问题,而不是 Codeigniter 文件。
【讨论】:
【参考方案3】:发生该错误的原因有很多。这里有一些 1.确保你在controllers文件夹下有main.php,在main.php里面你应该有一个Main类,它像这样扩展CI_Controller
class Main extends CI_Controller
2.确保您的 .htaccess 正常工作。如果您的上一步正常,请尝试点击此链接
your_site_url/index.php/main/cek_login//make sure cek_login function exists inside the controller
如果此链接有效,您可能遇到 .htaccess 问题 3.您的 cpanel 错误表明您的 .htaccess 无法正常工作。 检查您的服务器是否有主 .htaccess,如果找不到文件,它将重定向您的站点。如果是这样,那么您的子 .htaccess 将不起作用。 我认为这是产生错误的主要原因。
【讨论】:
已经解决了,原来.htaccess 文件被清空了!我不知道它是怎么发生的,它只是不知何故变成了空白。因此错误。在用我的本地设置检查之后,我知道这是罪魁祸首。感谢您的努力!以上是关于代码点火器,未找到 404 错误的主要内容,如果未能解决你的问题,请参考以下文章
NotFound:404 未找到(错误代码:10011):未知角色
C#客户端用WebClient上传文件至IIS服务器,报错:远程服务器返回错误: (404) 未找到