Codeigniter默认控制器适用于主索引页面,但不适用于主控制器中的页面

时间:2016-06-25 22:51:00

标签: php codeigniter

如何为Main控制器中的每个页面配置路由?

Codeigniter默认控制器仅适用于Main索引页面,但不适用于events Main控制器内的页面。 (见下文)

我希望http://example.com/main/events代替http://example.com/events

此链接将您带到Main控制器的索引页面,就像它应该:

http://example.com/

来自Main控制器的此事件页面将带您进入404错误页面:

http://example.com/events

events页面仅适用于URL中的默认控制器,如下所示:

http://example.com/main/events

我的routes.php文件的内容:

$route['default_controller'] = 'Main';
$route['404_override'] = 'main/error404';
$route['translate_uri_dashes'] = FALSE;

.htaccess文件的内容:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

3 个答案:

答案 0 :(得分:1)

试试这个。当您的网址为events

时,系统会将您带入http://example.com/events页面
$route['default_controller'] = 'Main';
$route['events'] = 'main/events';
$route['404_override'] = 'main/error404';
$route['translate_uri_dashes'] = FALSE;

答案 1 :(得分:1)

application/config/routes.php

$route['events'] = 'main/events';  # www.example.com/events
$route['newPath'] = 'controller/exactPath'; # www.example.com/newPath

.htaccess(外部应用程序文件夹)

RewriteEngine on
RewriteCond $1 !^(index\.php|assets|image|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

答案 2 :(得分:0)

这是路由器在codeigniter中的工作方式。你可以:

  1. function events() {...}函数中的逻辑移动到它自己的class Events extends CI_Controller {}`控制器的索引函数

  2. config/routes.php配置文件中的自定义路由设置为Main控制器中的方法,如下所示:(您也可以使用(:any)和其他参数):< / p>

    $route['events/(.*)'] = 'main/events/$1';