0

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

4

3 回答 3

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 的回复中看到的那样。

于 2010-08-04T14:26:54.800 回答
1

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

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

虽然我自己没有尝试过。

于 2010-08-04T13:58:35.700 回答
0

好吧,尽管将某些区域列入白名单似乎有点不标准,而且我仍然在思考如何处理 404 错误,但这里有一种方法目前正在使用来自进化的正则表达式。我的 home.php 控制器文件:

家庭类扩展控制器{

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 */

感谢您的帮助,如果可用,请发布替代解决方案。

于 2010-08-04T16:07:23.473 回答