【问题标题】:Routing issues in CodeigniterCodeigniter 中的路由问题
【发布时间】:2012-06-08 06:26:57
【问题描述】:

我正在使用 codeigniter 开发一个 Web 应用程序。我在控制器中创建了一个名为“Administration”的文件夹。在这个文件夹中,我保存了与管理面板相关的所有控制器。

现在,我希望如果任何用户将 url 键入为 www.mywebsite.com/administration,则用户应重定向到相应的控制器,无论管理后的下一个段是什么。就像如果用户键入 wwww.mywebsite.com/administration/login,那么应该执行登录控制器。嗯,这是很明显的事情。

现在我想要的是,当有人键入任何 www.mywebsite.com/anything_else 时,默认情况下它应该被定向到其他控制器。我正在使用以下路线设置:

$route['default_controller'] = 'welcome';
$route['404_override'] = ''; 
$route['administration/(:any)']='administration/$1';
$route['(:any)']='fetch_pages';

请指导。

【问题讨论】:

    标签: php codeigniter routes


    【解决方案1】:

    我建议您采用另一种方法:

    $route['default_controller'] = 'welcome';
    $route['404_override'] = 'fetch_pages/index'; 
    

    此解决方案使您能够跳过声明明显的administration 路由,所有其他路径将通过fetch_pages 控制器调用。

    Read more about 404_override

    根据您的需要,当您找不到基于uri 的数据时,您可能需要考虑运行show_404()

    【讨论】:

    • 另外,如果有更好的方法,请提出建议。另外,如果您能指出我之前方法中的错误,那就太好了,因为它不起作用。
    • 我不完全确定什么不适合你,但我会考虑尝试 $route['(.+)']='fetch_pages/$1' 而不是你给定的。
    • 使用 Miqdad Ali 建议的解决方案。感谢大家。我现在起床了。
    【解决方案2】:
    $route['^(?!administration).*'] = "fetch_pages";
    $route['administration/(:any)']='Administration/$1';
    

    我认为您在管理中创建了带有大写字母“A”的文件夹

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多