1

我在 codeigniter 中自定义我的路线,这是我的 routes.php 示例:

$route['default_controller'] = 'maincontroller/main';                                                                                                                                                                                    
$route['404_override'] = '';     

$route['test'] = 'maincontroller/test';

这是主控制器类:

class Maincontroller extends CI_Controller  
{                 
    public function __construct( )
    {
        parent::__construct( ); 
        $this->load->library('session');  
        $this->init( ); 
    }


    public function main( )         
    {       
        echo "in main";
    } 

    public function test( )
    {
        echo "test";
    }
}

但是当我在浏览器中访问此 url:/test 时,我得到服务器的 404 页面未找到错误。

我不知道我做错了什么,我遵循了 codeigniter 用户指南中的路线指南。

4

2 回答 2

6

而不是去 /test ,尝试去 /index.php/test

默认情况下,CodeIgniter 通过 index.php 运行所有内容。

您可以通过将 .htaccess 文件添加到站点根文件夹来更改此行为。

这直接取自 CodeIgniter 用户指南。

https://ellislab.com/codeigniter/user-guide/general/urls.html

htaccess 文件

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

如果你这样做,你还需要改变你的 config/config.php 文件

寻找

$config['index_page'] = 'index.php';

将其更改为

$config['index_page'] = '';

当您想在页面(视图)中创建链接时,您可以使用内置的 site_url() 函数,您可能需要为此加载 url 帮助程序。

例如

<?php echo site_url('test'); ?>

这将考虑 $config['index_page'] 设置并为您的链接创建正确的 url。

于 2012-04-15T21:14:59.490 回答
0

如果您尝试从 localhost 运行您的站点,请使用以下代码.. 将 .htaccess 文件添加到站点根文件夹(例如:mysite)。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /root folder/index.php/$1 [L]

对于托管在远程托管服务器上的站点,请使用此代码

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
于 2012-04-16T03:20:16.810 回答