我在我的wamp上使用codeigniter,一切都很好但是当我在实时服务器上传它时,default_controller正在工作但是其他控制器没有找到404或者“在这个服务器上找不到请求的URL / Sample_controller”。
这是我的样本控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Sample_controller extends CI_Controller {
function __construct(){
parent::__construct();
}
public function index(){
print_r('Hello World');
}
}
这是我的config.php:
$config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['directory_trigger'] = 'd';
$config['allow_get_array'] = TRUE;
这是我的router.php:
$route['default_controller'] = 'login';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
和我的.htaccess:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} !www.sampleurl.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond $1 !^(index\.php|assets|user_assets|tmp|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
如果我尝试这个sampleurl.com它工作正常并将指示我的默认控制器,这是登录但如果我尝试这个sampleurl.com/sample_controller或sampleurl.com/login它将导致我找不到404请求的URL /在此服务器上找不到sample_controller。位于sampleurl.com端口80的Apache / 2.4.7(Ubuntu)服务器
我希望有人可以帮助我,我尝试将它们改为:
$config['uri_protocol'] = AUTO
$config['enable_query_strings'] = TRUE;
而它仍然无法正常工作。
您需要为该控制器添加路由才能工作
$route['sample_controller'] = 'sample_controller';
对于您创建的每个新控制器,您需要为其创建路径
根据您的代码,您可能会遇到以下两个问题: 1-根据documentation,您需要使控制器文件名首字符大写。 2-尝试添加问号“?”在.htaccess文件的最后一条规则中。同时删除“index.php”之前的“/”检查下面的代码。
当前代码:
RewriteRule ^(.*)$ /index.php/$1 [L]
新代码:
RewriteRule ^(.*)$ index.php?/$1 [L]
只是简单地改变
RewriteBase /folder
.htaccess文件中的这行代码到项目的相应文件夹名称,它将正常工作。