[英]Only default controller is working and the rest is 404 not found
我在我的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-根据文档,您需要将控制器文件名的首字符设置为大写。
2-尝试添加问号“?” 在.htaccess文件的最后一条规则中。 还请在“ index.php”之前删除以下代码,然后删除“ /”。
当前代码:
RewriteRule ^(.*)$ /index.php/$1 [L]
新代码:
RewriteRule ^(.*)$ index.php?/$1 [L]
只是简单地改变
RewriteBase /folder
您的.htaccess文件中的这一行代码与您的项目的相应文件夹名称相同,它将正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.