代码点火器,未找到404错误

时间:2014-12-22 08:00:38

标签: apache codeigniter http-status-code-404 base-url

我的网站存在问题。在升级到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.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 [&#39; base_url&#39;] =&#39;&#39 ;;
   $ config [&#39; index_page&#39;] =&#39;&#39 ;;
   $ config [&#39; uri_protocol&#39;] =&#39; REQUEST_URI&#39 ;; - &GT;之前试过AUTO,但没用。以前是AUTO

根文件夹中的

.htaccess
RewriteEngine On RewriteCond%{REQUEST_FILENAME}! - f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule ^(。*)$ index.php / $ 1 [L]

.htaccess在另一个文件夹中 拒绝所有

routes.php
$ route [&#39; default_controller&#39;] =&#34; main&#34 ;;
$ route [&#39; 404_override&#39;] =&#39; not_found&#39 ;;

我也试图查看配置文件,并在发布之前尝试了很多技巧。

我怀疑是在base_url函数或路由机制上。我不确定。

到代码点火器或PHP,也在服务器管理中。我的优势在于数据库。

请帮助缩小根本问题。

最好的问候, Ridwan

3 个答案:

答案 0 :(得分:3)

出现这种错误有很多原因。这里有一些 1.确保你在控制器文件夹下有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将无效。
我认为这是产生错误的主要原因。

答案 1 :(得分:2)

请检查您的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');
        }
    }

答案 2 :(得分:2)

只需上传测试文件并检查服务器目录的文档根目录。

1.创建一个文件info.php 2.编写代码

<?php
 phpinfo();

3.打开任何broswer并输入http://www.yourdomain.com/info.php

  1. 如果工作正常,请在info.php页面的列出信息中找到文档roon

  2. 如果此http://www.yourdomain.com/info.php不起作用,请与服务器支持团队联系以解决问题。基本上是服务器配置问题,而不是Codeigniter文件。