2016-01-20 60 views
0

我知道有這麼多帖子認爲這個問題。我嘗試了一切,但沒有成功。Codeigniter調用函數在沒有index.php的控制器中

我在我的windows 10機器上使用xampp v3.2.2。在我的htdocs中,我有一個名爲mysite的項目。在那裏我有codeigniter 3.0.3。

的config.php

$config['base_url'] = 'http://localhost/mysite/'; 

$config['index_page'] = ''; 

routes.php文件

$route['default_controller'] = 'CI_home'; 

控制器CI_home.php:

class CI_home extends CI_Controller{ 

    function __construct() { 
     parent::__construct(); 
    } 

    public function index($lang = ''){ 
     $this->load->helper('url'); 
     $this->load->helper('language'); 
     $this->lang->load($lang, $lang); 
     $this->load->view('view_home'); 
    } 
} 

當我調用http://localhost/mysite,頁面被正確顯示。

問題是,當我嘗試http://localhost/mysite/enhttp://localhost/mysite/index/en我從xampp收到404。

但是,如果我嘗試http://localhost/mysite/index.php/CI_home/index/en它工作正常。

我做錯了什麼?我如何刪除「CI_home/index」?

http://localhost/mysite/.htaccess:

的.htaccess

RewriteEngine On 
RewriteCond $1 !^(index\.php|resources|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

如果啓用mod_rewrite的我已經選中。

請幫幫我!

由於提前, yab86

+0

添加到您的route.php'$路線[ '(:任何)'] = 'CI_home/$ 1';' – MAZux

+0

謝謝MAZux。我試過了,但沒有改變。 – yab86

+0

嘗試添加索引方法,試試:'$ route ['(:any)'] ='CI_home/index/$ 1';' – MAZux

回答

3

嘗試以下

Options +FollowSymLinks 
Options -Indexes 
DirectoryIndex index.php 
RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

這htaccess的確保htaccess的在你的主目錄。

然後設置自己的基本網址

$config['base_url'] = 'http://localhost/yourproject/'; 

然後取出的index.php

$config['index_page'] = ''; 

注:笨3個版本是區分大小寫的。 確保只有類別和文件名稱的第一個字母大寫

<?php 

class Ci_home extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
    } 

    public function index($lang = '') { 
     $this->load->helper('url'); 
     $this->load->helper('language'); 
     $this->lang->load($lang, $lang); 
     $this->load->view('view_home'); 
    } 
} 

然後確保文件名是Ci_home.php

那麼你的默認路由應該是

當使用默認的控制器確保是相同的名稱作爲您選擇的控制器。

URI Routing

$route['default_controller'] = 'ci_home'; 

$route['(:any)'] = 'ci_home/index/$1'; 
+0

這是字母大寫的問題,謝謝wolfgang1983! – yab86

相關問題