繁体   English   中英

只有默认控制器在工作,其余未找到404

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM