3

我的路由和控制器有问题。我有两种类型的控制器:第一种用于管理网页,第二种用于 cms,我更喜欢将它们放在子文件夹中。例子:

/controller/site.php (for webpages)
/controller/admin/ (for controllers to manage cms)

在 routes.php 我写过:

$route['(:any)'] = "site/$1";
$route['admin/(:any)'] = "admin/$1";

我以这种方式设置了文件 .htacces :

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css|js|font|woff|ttf|svg|eot|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

和 config.php 上的这个变量:

$config['index'] = '';

但它仅适用于“网站”。例如,如果我写“mywebsite/admin/login”,它会返回 404 错误。

我还发现 MY_Router 可以扩展 CI_Route 但不起作用。

有人可以帮我解决这个问题吗?

4

1 回答 1

10

将路线放在admin路线之前any

$route['admin/(:any)'] = "admin/$1";
$route['(:any)'] = "site/$1";

否则它将始终命中any并重定向到site. admin你必须在匹配之前给它一个匹配的机会any

于 2013-09-12T13:41:52.097 回答