Codeigniter第一段URL变量

时间:2010-08-04 13:29:10

标签: php url codeigniter url-shortener

我希望使用URL缩短方案,我希望变量位于URL的第一段,www.example.com / jjf08h204。我的默认控制器是“home.php”,我有.htaccess mod-rewrites到位,那么管理这个的最佳方法是什么?我想我的智能已被标准/控制器/方法/变量方案阻止,这是一个URI协议设置吗?谢谢!

3 个答案:

答案 0 :(得分:4)

添加马修的回应。

这是system/application/config/routes.php文件中您需要的内容:

$route['(:any)'] = "home";

这将重定向一切。

如果您有其他需要使用的控制器,则可能不想重定向所有内容。如果是这种情况,您可以改为使用此正则表达式:

$route['^(?!about|contact)\S*'] = "home";

这将允许您重定向除控制器'about'或'contact'之外的所有内容 - 这些将被定向到'about.php'和'contact.php'控制器。

请注意,我选择不在CodeIgniter中使用通配符,您可能会发现它们对您更有效,但我选择在重定向后手动解析$ _SERVER ['REQUEST_URI']。但是,如果您想使用通配符,则只需在路线中添加/$1,如您在Matthew的回复中所示。

答案 1 :(得分:1)

我自己并没有和Routing玩过很多,但我想你可以尝试这样的事情:

$route['(:any)'] = "controllername/actionname/$1";

虽然我自己没试过。

答案 2 :(得分:0)

即使将某些区域列入白名单似乎有点不合标准,而且我仍在脑海中如何处理404错误,这里有一个方法现在正在使用evolve的正则表达式。我的home.php控制器文件:

class Home扩展Controller {

function Home()
{
    parent::Controller();
    $uri = uri_string();
    if(!empty($uri))    {
        $uri_array = explode('/',$uri);
        $first_segment = $uri_array[1];
        if(isset($first_segment))   {
            //do stuff, load alternative view
        }
    }
}

function index()
{
    $this->load->view('home_view');
}

}

/ * EOF * /

感谢您的帮助,请发布备用解决方案(如果有)。