codeigniter的重写规则

时间:2010-05-20 12:35:06

标签: apache mod-rewrite codeigniter

这是CI中的控制器

class Welcome extends Controller {

 function Welcome()
 {
  parent::Controller(); 
  }

 function index()
 {

 }
 function bil($model='')
 { }

我想重写一遍

http://example.com/index.php/welcome/bil/model

成为

http://example.com/model

在我的htaccess中我有

RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/welcome/$1 [L]
#RewriteRule ^(.*)$ /index.php/welcome/bil/$1 [L]

我认为它应该像删除/index.php/welcome/部分一样简单 但是当我取消注释最后一行时,它会出现 500内部服务器错误

1 个答案:

答案 0 :(得分:0)

您需要使用mod_rewrite删除index.php文件,就像上面一样,但使用CodeIgniter's routing featuresexample.com/model重新路由到example.com/welcome/bil/model

在routes.php配置文件中,您可以定义一条新路由,如下所示:

// a URL with anything after example.com 
// will get remapped to the "welcome" class and the "bil" function, 
// passing the match as a variable
$route['(:any)'] = "welcome/bil/$1";

然后,输入example.com/abc123将等同于example.com/welcome/bil/abc123

请注意,URL中只允许$config['permitted_uri_chars'](位于config.php文件中)允许的字符。

希望有所帮助!