繁体   English   中英

使用route删除codeigniter 3上的url子文件夹

[英]Remove url subfolder on codeigniter 3 using route

我将控制器管理到子文件夹中,以便于维护。 它们看起来像这样:

controller
  -admin
     c_admin
  -super_admin
     c_sa

因此,在localhost中常见的URL中,它必须为: localhost/app/admin/c_adminlocalhost/app/super_admin/c_sa

我怎样才能让他们像这样: localhost/app/admin/localhost/app/sa/

感谢您的帮助,非常感谢。

config/routes.php上添加此代码

  $route['admin/'] = "admin/c_admin";
  $route['sa/'] = "super_admin/c_sa";

您还可以传递这样的参数-

$route['admin/(:num)/(:any)'] = "admin/c_admin/$1/$2";

其中(:num)仅用于数字值, (:any)同时用于数字和字符

以下方法对我有用:

如果您尝试直接访问应用程序文件夹的管理应用程序,例如提供URL
localhost / app / admin /,则根文件index.php将引发异常,例如

“您的视图文件夹路径似乎未正确设置。请打开以下文件并更正此文件:index.php”

要解决此问题,请尝试以下方法:

index.php中添加以下代码

// Applications handling
$mystring = $_SERVER['REQUEST_URI'];
$app_names = '/(\badmin\b)|(\bsa\b)/i';
$app_name = null;
preg_match($app_names, $mystring, $app_name);

// if array emtpy then call the default app 'admin'
$app_name = (isset($app_name[0]))?$app_name[0]:'admin';  
// if value found sa then set the app name 'super_admin'    
$app_name = ($app_name === 'sa')?'super_admin':$app_name; 

$application_folder = "application/{$app_name}";

然后去你的
application / admin / config / routes.php并添加此路由$ route ['admin'] ='controller-name';

super_admin应用程序的相同过程
application / super_admin / config / routes.php并添加此路由$ route ['sa'] ='controller-name';

现在尝试您的路线,希望它将针对正确的应用

  • 本地主机/应用程序/管理员/
  • 本地主机/应用/ SA /

希望这能解决您的问题。 如果找到更好的解决方案,那么请告知。

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM