codeigniter中的覆盖路由
可能重复:codeigniter中的覆盖路由,codeigniter,url,redirect,routes,Codeigniter,Url,Redirect,Routes,可能重复: 我正在codeigniter中开发一个url缩短器/重定向web应用程序,我的路由遇到了问题 我的第一条路线是: $route['(:any)'] = "redirect/index/$1"; 这就是处理重定向的方法,因此example.com/dwB将转到重定向控制器 下面我有一些路由覆盖了页面和其他控制器等的路由。当我描述整个url(包括参数等)时,它们工作得很好,但现在我遇到了麻烦,因为我有一些动态url,如: example.com/stats/view/dwB 或者
我正在codeigniter中开发一个url缩短器/重定向web应用程序,我的路由遇到了问题 我的第一条路线是:
$route['(:any)'] = "redirect/index/$1";
这就是处理重定向的方法,因此example.com/dwB将转到重定向控制器
下面我有一些路由覆盖了页面和其他控制器等的路由。当我描述整个url(包括参数等)时,它们工作得很好,但现在我遇到了麻烦,因为我有一些动态url,如:
example.com/stats/view/dwB
或者facebook授权回复等,我显然无法为其编写路由。我尝试过使用类似于:
$route['stats/view/(:any)'] = "stats/view/$1";
但所有这些似乎都无法覆盖第一条路线。这是我的整个routes.php文档
$route['(:any)'] = "redirect/index/$1";
$route['shorten/create'] = "shorten/create"; // overwrite the previous route
$route['stats/view/(:any)'] = "stats/view/$1"; // allow the stats controller to be used
$route['login'] = "auth/login"; // allow the login(auth) controller to be used
$route['register'] = "auth/register"; // allow the login(auth) controller to be used
$route['auth_social/fblogin'] = "auth_social/fblogin"; // allow the login(auth) controller to be used
$route['dashboard'] = "dashboard"; // allow the login(auth) controller to be used
$route['auth/logout'] = "auth/logout"; // allow the login(auth) controller to be used
$route['auth'] = "auth/index"; // allow the login(auth) controller to be used
$route['default_controller'] = "pages";
$route['404_override'] = '404';
正如我在评论中提到的,将“任意”路线放在自定义路线的末尾,如下所示:
$route['shorten/create'] = "shorten/create"; // overwrite the previous route
$route['stats/view/(:any)'] = "stats/view/$1"; // allow the stats controller to be used
$route['login'] = "auth/login"; // allow the login(auth) controller to be used
$route['register'] = "auth/register"; // allow the login(auth) controller to be used
$route['auth_social/fblogin'] = "auth_social/fblogin"; // allow the login(auth) controller to be used
$route['dashboard'] = "dashboard"; // allow the login(auth) controller to be used
$route['auth/logout'] = "auth/logout"; // allow the login(auth) controller to be used
$route['auth'] = "auth/index"; // allow the login(auth) controller to be used
// Move "any" route down here...
$route['(:any)'] = "redirect/index/$1";
正如我在评论中提到的,将“任意”路线放在自定义路线的末尾,如下所示:
$route['shorten/create'] = "shorten/create"; // overwrite the previous route
$route['stats/view/(:any)'] = "stats/view/$1"; // allow the stats controller to be used
$route['login'] = "auth/login"; // allow the login(auth) controller to be used
$route['register'] = "auth/register"; // allow the login(auth) controller to be used
$route['auth_social/fblogin'] = "auth_social/fblogin"; // allow the login(auth) controller to be used
$route['dashboard'] = "dashboard"; // allow the login(auth) controller to be used
$route['auth/logout'] = "auth/logout"; // allow the login(auth) controller to be used
$route['auth'] = "auth/index"; // allow the login(auth) controller to be used
// Move "any" route down here...
$route['(:any)'] = "redirect/index/$1";
您是否尝试将
$route['(:any)]=“重定向/索引/$1”代码>结尾?是的,把它放在结尾是有效的。你知道为什么吗?@Chris:“any”路由匹配任何URL,所以它总是会被触发。将该路由放置在其他自定义路由的下方将使其他路由有机会首先被触发(如果发生匹配)。啊,好的。这是有道理的。谢谢您是否尝试将$route['(:any)]=“重定向/索引/$1”代码>结尾?是的,把它放在结尾是有效的。你知道为什么吗?@Chris:“any”路由匹配任何URL,所以它总是会被触发。将该路由放置在其他自定义路由的下方将使其他路由有机会首先被触发(如果发生匹配)。啊,好的。这是有道理的。谢谢