我希望使用URL缩短方案,我希望变量位于URL的第一段,www.example.com / jjf08h204。我的默认控制器是“home.php”,我有.htaccess mod-rewrites到位,那么管理这个的最佳方法是什么?我想我的智能已被标准/控制器/方法/变量方案阻止,这是一个URI协议设置吗?谢谢!
答案 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)
答案 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 * /
感谢您的帮助,请发布备用解决方案(如果有)。