2015-05-07 4 views
0

Я разрабатываю веб-приложение, используя Codeigniter. Пока мне удалось запустить приложение на моем локальном хосте. Но когда я загружаю контент на веб-хостинг, я не могу заставить его работать.Codeigniter return 404 страница не найден

Это то, что я испытывал до сих пор:

  1. странно, я могу назвать контроллер Welcome.php, который является контроллером выборки из CodeIgniter, и показывая хорошо.
  2. Но я не могу назвать какой-либо другой контроллер, который мой контроллер по умолчанию Eventhough я поставил его в routes.php, config.php и т.д.

Ниже моя конфигурация для этих файлов:

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, который странно работает хорошо.

Спасибо всем, и надеюсь, что мои объяснения понятны.

+0

Попробуйте добавить 'Опции -Multiviews + FollowSymLinks' к ваш файл .htaccess – Capsule

+0

Я видел, что вы дважды писали $ config ['base_url'], это ошибка типографии или вы на самом деле это сделали? – ankur140290

+0

Капсула, я добавил строку поверх .htaccess, но все еще не работает. любое другое предложение? – yodann

ответ

0

Я думаю, что ответ лежит в вашем вопросе:

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

Я думаю, что вам нужно включить mod_rewrite

ОБНОВЛЕНО

Найди php.ini в

/и т.д. /php.ini

Или здесь:

/etc/php/php.ini

/etc/php5/php.ini

Найдите строку с disable_functions, один из них, вероятно, будучи phpinfo.Вам нужно удалить phpinfo из списка функций инвалидов в disabled_functions =

IF THEN UBUNTU

Чтобы включить модуль перезаписи, запустить "apache2 включить модуль переписывания" в терминале:

sudo a2enmod rewrite 

Вам необходимо перезапустить сервер, чтобы применить изменения:

sudo service apache2 restart 
+0

Я проверил ваше предложение и выяснил, что добавив этот RewriteEngine On, вы сможете использовать mod_rewrite, это то, что вы имеете в виду? (Кстати, я использую cpanel), и это информация, которую я получил от https://forums.cpanel.net/threads/how-to-enable-mod_rewrite-apache.361181/ – yodann

+0

Использовать функцию phpinfo() и поиск mod_rewrite в загруженных модулях –

+0

Я получил это сообщение об ошибке при запуске phpinfo() Внимание: phpinfo() отключен из соображений безопасности в /home/global/public_html/lokadok.co.id/phpinfo.php в строке 1 , что это значит? – yodann

Смежные вопросы