Codeigniter路由问题

dav*_*ave 1 php url uri routes codeigniter

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

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

$route['test'] = 'maincontroller/test';
Run Code Online (Sandbox Code Playgroud)

这是maincontroller类:

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";
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我不知道我做错了什么,我按照codeigniter用户指南中的路线指南.

Dal*_*ale 6

而不是去/测试,尝试去/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]
Run Code Online (Sandbox Code Playgroud)

如果这样做,您还需要更改config/config.php文件

$config['index_page'] = 'index.php';
Run Code Online (Sandbox Code Playgroud)

改为

$config['index_page'] = '';
Run Code Online (Sandbox Code Playgroud)

如果要在页面(视图)中创建链接,可以使用内置的site_url()函数,则可能需要为此加载url帮助程序.

例如

<?php echo site_url('test'); ?>
Run Code Online (Sandbox Code Playgroud)

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