我知道有很多帖子表明这个问题。我尝试了一切,但没有成功。
我在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/en
或http://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 :(得分:3)
尝试下面的htaccess
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。
然后设置您的基本网址
$config['base_url'] = 'http://localhost/yourproject/';
然后删除index.php
$config['index_page'] = '';
注意: Codeigniter 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
然后您的默认路线应为
使用默认控制器时,请确保与您选择的控制器名称相同。
$route['default_controller'] = 'ci_home';
$route['(:any)'] = 'ci_home/index/$1';