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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了只有默认控制器正在工作,其余的404未找到相关的知识,希望对你有一定的参考价值。

我在我的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文件中的这行代码到项目的相应文件夹名称,它将正常工作。

以上是关于只有默认控制器正在工作,其余的404未找到的主要内容,如果未能解决你的问题,请参考以下文章

只有主页显示所有其他页面在 xampp codeigniter 中显示错误 404

未找到 Laravel 路由,默认根路由除外

TestServer 返回 404 未找到

Spring-Boot MVC 模板未加载(未找到 404)

Laravel 404 页面未找到,路径存在

Codeigniter - 404 页面未找到