2012-04-15 104 views
1

我定制我的笨路,这里是我的routes.php文件的样本:笨路由问题

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

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

这里是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"; 
    } 
} 

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

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

+0

哇,这工作....感谢。那么如何设置路由,以便它始终在url中包含index.php,就像默认情况下那样。 – dave 2012-04-15 21:15:01

回答

5

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

默认情况下笨贯穿的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'); ?> 

这将考虑到$配置[“index_page”]设定,为您的链接正确的网址。

+0

哇,工作....谢谢。那么如何设置路由,以便它始终在url中包含index.php,就像默认情况下那样。 – dave 2012-04-15 21:15:26

+0

接受。那么我可以在哪里可以使它默认为index.php – dave 2012-04-15 21:17:58

+1

干杯:)希望这个信息可以帮助,请检查我添加的链接,以获得有关CodeIgniter URL – Dale 2012-04-15 21:21:20

0

如果您尝试从本地主机运行您的站点,请使用下面的代码。 将.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]