问题
since i want to separate the frontend and backend of the system. i have created 2 folders inside controllers as frontend and backend
Below is the structure of my controller folder
controller
--frontend
---store.php
---processing.php
---profile.php
---authenticate.php
---register.php
--backend
---authenticate.php
---stats.php
---users.php
---property_manage.php
---register.php
i can access the functions by using
frontend/store/add
frontend/store/manage
......
backend/stats/sales
backend/stats/payments
.....
but i want to take off the frontend and the backend segments from the url.
I checked the routing feature in codeigniter but according to my knowledge i need to individually specify each route. Since i have about 12 controllers and each has around 10 -15 functions i might have to specify each and every function to the route.
is there any other efficient way to achieve using routing or any other way? (without using any htaccess)
回答1:
Do this:
$route['store/(:any)'] = 'frontend/store/$1';
$route['processing/(:any)'] = 'frontend/processing/$1';
$route['profile/(:any)'] = 'frontend/profile/$1';
Same for backend :
$route['backend/(:any)'] = 'backend/authenticate/$1';
You don't have to create each rule in routes.php for every function of the controller, rather one rule per controller will be enough as mentioned above.
URI Routing : CodeIgniter User Guide
$1 represent the first expression, here (:any) is the expression, you can have multiple expression on each rule, and expression is represented as $1, $2 and so on on the other side.
Similarly, (:num) will match a segment containing only numbers, (:any) will match a segment containing any character, (\d+) will match any digit, ([a-z]+) will match any alpha text.
回答2:
You have to be able to differentiate the frontend from the backend somehow. Maybe set a route that forwards any uri with "admin" to the backend, and anything without "admin" to the frontend.
回答3:
For Front-End you can add this in routes.php:
$this->set_directory( "frontend" );
so in browser URL, there is no need to include "frontend"
来源:https://stackoverflow.com/questions/13955335/routing-controllers-in-subfolders-using-codeigniter