我想要以下行为:
http://www.example.com/应该转到:http://example.com/welcome
(DONE BY在routes.php中设置default_controller)
controllerName
不存在,则应该转到:
带有functionaName
的specialController和specialFunction
参数例如。 http://www.example.com/greatProducts应该成为
http://www.example.com/specialController/specialFunction/greatProducts如果greatProducts
控制器不存在,(它可以是任何字符串,而不仅仅是greatProduct
,情况相同,即具有该名称的控制器不存在)
希望最好使用路由规则来实现这一点, 通过编辑库来更改URI段对我来说似乎不是一个好选择。
这项工作:
我通过编辑core / Routes.php中的Routes.php并添加类似
的内容来尝试`$segments = array("specialController","specialFunction",$segments[0]);
return $segments;`
如果发现控制器不存在。
答案 0 :(得分:3)
试试这个(未经测试但应该有效):
$route['greatPtroduct/(:any)'] = "specialController/specialFunction/$1";
控制器:
class specialController extends CI_Controller {
function specialFunction($method)
{
if(method_exists($this,$method))
{
$this->$method;
}
else
{
show_404;
}
}
<强>更新强>
这更棘手。像
这样的路线$route['(:any)/(:any)'] = "specialController/specialFunction/$1";
可以工作,但它会捕获任何控制器,所以如果你的应用程序中有其他控制器,你需要将它们列入白名单以避免受到这种情况的影响。例如:
$route['contact'] = "contact";
$route['about'] = "about";
// and so on
$route['(:any)/(:any)'] = "specialController/specialFunction/$1";