定义路由

## 定义路由 我们需要在ROOT下config 下的 route.php 文件中设置路由信息. ```php '路由设定' => ['控制器/方法', '请求方式'] ``` ```php //路由配置 return [ 'rewrite'=>[ '/$' => ['home/index/go', '*'], '/abc/:id' => ['home/index/go', '*'], ] ]; ``` 上方规则还是很简单的: 访问 / (无后缀) 则会进入 home 应用的 index 控制器 的 go 函数。 ## 路由设置 ```php '/abc/:id' => ['home/index/go', '*'], 在控制器中或者$_GET 中 均可获取到 ID 的数据。 //网站根目录访问home/index/index;所有请求 '/$' => ['home/index/index', '*'], //路由/blog访问home/blog/index;所有请求 '/blog' => ['home/blog/index', '*'], //路由/view/1访问home/blog/view/id/1; get请求 '/view/:id' => ['home/blog/view', 'get'], //路由/update/1访问home/blog/save/id/1; post请求 '/update/:id' => ['home/blog/save', 'post'], //完全匹配;/act/xxx/id/1不会访问index/act '/act/:ac$' => ['home/index/act', '*'], ``` > 如匹配最终地址和您预想不相同,则请调整位置或者修改是否需要完全匹配 ## 多入口路由 > 暂不推荐使用多入口,因为程序本身就支持多应用 我们在根目录新建了 admin.php 文件。 ```php \core\init::start('admin'); ``` 并且在启动程序前,传入了应用名称。那么程序在需要匹配应用是,就会使用 admin 应用来进行匹配了哦。 如果路由中有设置login ```php '/login$'=>['admin/index/go','*'] ``` --- 那么地址访问 ``` http://framework.com/login http://framework.com/admin.php/login ``` 均会进入 admin/index/go 函数中! 当然,如果不想使用.php 来作为入口,你也可以使用伪静态配置 ```nginx Nginx:伪静态中增加 ,位于 index.php 上方即可 rewrite /admin/(.*)$ /admin.php/$1 last; ``` 最终伪静态内容为: ```nginx location / { if (!-e $request_filename){ rewrite /admin/(.*)$ /admin.php/$1 last; rewrite ^(.*)$ /index.php/$1 last; break; } } ``` ### Apache: ```apache <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^admin/?(.*)$ admin.php?/$1 [QSA,PT,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule> ```