Codeigniter返回404页面未找到

时间:2015-05-07 04:51:10

标签: php html .htaccess codeigniter

我正在使用Codeigniter开发网络应用程序。到目前为止,我已经设法在我的localhost上运行该应用程序。但是当我将内容上传到网络托管时,我无法让它运行。

这是我到目前为止测试过的:

  1. 奇怪的是,我可以调用控制器 Welcome.php ,这是来自codeigniter的示例控制器,并且显示良好。
  2. 但是我无法调用我的默认控制器的任何其他控制器,尽管我在routes.php,config.php等中设置了它。
  3. 以下是我对这些文件的配置:

    routes.php文件

    $route['default_controller'] = 'lokadok';
    $route['404_override'] = '';
    $route['upload/do_upload'] = 'upload/do_upload';
    

    的config.php

    $config['base_url'] = (( isset($_SERVER['HTTP_HOST']) && strlen($_SERVER['HTTP_HOST'])>0) ?
                        'http://' . $_SERVER['HTTP_HOST'] : 'http://www.lokadok.co.id' );
    $config['index_page'] = '';
    $config['uri_protocol'] = 'REQUEST_URI';
    $config['url_suffix'] = '.html';
    $config['charset'] = 'UTF-8';
    

    这是 .htaccess

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^(/index\.php|/assets|/robots\.txt|/favicon\.ico)
    RewriteRule ^(.*)\.html$ /index.php/$1 [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^(/index\.php|/assets|/robots\.txt|/favicon\.ico)
    RewriteRule ^(.*)$ /index.php/$1 [L]
    </IfModule>
    
    <IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
    </IfModule>
    

    我的默认控制器是:

    lokadok.php

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class Lokadok extends CI_Controller {
    
        public function index() {
            $data['is_login'] = $this->session->userdata(LOGGED_IN);            
    
            $specialty = $this->input->post('specialty', '');
            $address = $this->input->post('address', '');
            $doc_name = $this->input->post('doc_name', '');
    
            if ($specialty == '' && $address == '' && $doc_name == '') {
                $this->load->model('model_share');
    
                $data['custom_css'] = array(
                    'style/custom/lokadok.css'
                );
    
                $data['sort_by'] = 1;
                $data['pop_specialties'] = $this->model_share->get_specialties(true);
                $data['specialties'] = $this->model_share->get_specialties();
    
                $this->load->view('templates/header', $data);
                $this->load->view('lokadok_view');
                $this->load->view('templates/footer', $data);
            } else {    
                redirect("search?specialty=$specialty&address=$address&doc_name=$doc_name&sort_by=1");
            }       
        }
    }
    ?>
    

    我一直在寻找答案,但仍然无法弄明白。所以如果有人能发现错误,我会非常感激。

    要查看位置网站,您可以访问: www.lokadok.co.id,我希望将其称为我的默认控制器。

    并尝试拨打http://www.lokadok.co.id/welcome,这是奇怪的运行。

    谢谢大家,希望我的解释清楚。

1 个答案:

答案 0 :(得分:0)

我认为答案在于你的问题:

<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>

我认为您需要启用mod_rewrite

<强>已更新

中找到你的php.ini

/etc/php.ini中

或者在这里:

/etc/php/php.ini

/etc/php5/php.ini

找到带有disable_functions的行,其中一行可能是phpinfo。您需要从disabled_functions =

中的已禁用函数列表中删除phpinfo

IF UBUNTU那么

要启用重写模块,请在终端中运行“apache2 enable module rewrite”:

sudo a2enmod rewrite

您需要重新启动网络服务器才能应用更改:

sudo service apache2 restart