22

因为我想分离系统的前端和后端。我在控制器内创建了 2 个文件夹作为前端和后端

下面是我的控制器文件夹的结构

controller
 --frontend
   ---store.php
   ---processing.php
   ---profile.php
   ---authenticate.php
   ---register.php 

 --backend
   ---authenticate.php
   ---stats.php
   ---users.php
   ---property_manage.php
   ---register.php 

我可以使用

frontend/store/add
frontend/store/manage
......

backend/stats/sales
backend/stats/payments
.....

但我想从 url 中删除前端和后端段。

我检查了 codeigniter 中的路由功能,但据我所知,我需要单独指定每条路由。由于我有大约 12 个控制器,每个控制器都有大约 10 -15 个功能,我可能必须为路由指定每个功能。

有没有其他有效的方法来实现使用路由或任何其他方式?(不使用任何 htaccess)

4

3 回答 3

26

做这个:

$route['store/(:any)'] = 'frontend/store/$1';
$route['processing/(:any)'] = 'frontend/processing/$1';
$route['profile/(:any)'] = 'frontend/profile/$1';

后端相同:

$route['backend/(:any)'] = 'backend/authenticate/$1';

您不必为控制器的每个功能在 routes.php 中创建每个规则,如上所述,每个控制器一个规则就足够了。

URI 路由:CodeIgniter 用户指南

$1表示第一个表达式,这里(:any)是表达式,每个规则可以有多个表达式,表达式表示为$1$2以此类推。

同样,(:num)将匹配仅包含数字(:any)的段,将匹配包含任何字符的段,(\d+)将匹配任何数字,([a-z]+)将匹配任何字母文本。

于 2012-12-19T15:15:35.547 回答
2

对于前端,您可以在 routes.php 中添加:

$this->set_directory( "frontend" );

所以在浏览器 URL 中,不需要包含“前端”

于 2016-01-25T07:43:54.150 回答
1

您必须能够以某种方式区分前端和后端。也许设置一个路由,将任何带有“admin”的uri转发到后端,而将任何没有“admin”的uri转发到前端。

于 2012-12-19T15:16:34.110 回答