通常为了友好的URL格式,会进行站点URL的重写,可以在webserver(Nginx)的配置中进行rewrite,也可在在程序端进行

以下使用Yaf框架进行URL的重写,进行一些整理,方便日后查看

YAF的URL重写方式主要有以下几种,可以综合使用

方式1:在配置文件中进行

;a rewrite route match request /product/*/*

routes.route_name.type="rewrite"

routes.route_name.match="/product/:name/:value"

routes.route_name.route.controller=product

routes.route_name.route.action=info

;a regex route match request /list/*/*

routes.route_name1.type="regex"

routes.route_name1.match="#^list/([^/]*)/([^/]*)#"

routes.route_name1.route.controller=Index

routes.route_name1.route.action=action

routes.route_name1.map.1=name

routes.route_name1.map.2=value

;a simple route match /**?c=controller&a=action&m=module

routes.route_name2.type="simple"

routes.route_name2.controller=c

routes.route_name2.module=m

routes.route_name2.action=a

;a simple router match /**?r=PATH_INFO

routes.route_name3.type="supervar"

routes.route_name3.varname=r

;a map route match any request to controller

routes.route_name4.type="map"

routes.route_name4.controllerPrefer=TRUE

routes.route_namer.delimiter="#!"

之后在Bootstrap.php中添加初始化函数,函数名可按自己需求取,必需以_开头才会被调用

class Bootstrap extends Yaf_Bootstrap_Abstract{

public function _initConfig() {

$config = Yaf_Application::app()->getConfig();

Yaf_Registry::set("config", $config);

}

public function _initRoute(Yaf_Dispatcher $dispatcher) {

$router = $dispatcher->getRouter();

/**

* we can add some pre-defined routes in application.ini

*/

$router->addConfig(Yaf_Registry::get("config")->routes);

/**

* add a Rewrite route, then for a request uri:

* http://***/product/list/22/foo

* will be matched by this route, and result:

*

* [module] =>

* [controller] => product

* [action] => info

* [method] => GET

* [params:protected] => Array

* (

* [id] => 22

* [name] => foo

* )

*

*/

$route = new Yaf_Route_Rewrite(

"/product/list/:id/:name",

array(

"controller" => "product",

"action" => "info",

)

);

$router->addRoute('dummy', $route);

}

?>

方式2:直接在程序中,以数组方式配置

以下函数是放在Bootstrap.php中

public function _initRoute(Ap_Dispatcher $dispatcher) {

//在这里注册自己的路由协议,默认使用static路由

$router = Ap_Dispatcher::getInstance()->getRouter();

$routeConfig = array(

$router = Ap_Dispatcher::getInstance()->getRouter();

$routeConfig = array(

"item" => array(

"type" => "regex",

"match" => "#^/(software|game)/(.*).html$#",

"route" => array('action' => 'item'),

"map" => array( 1 => 'data_type', 2 => 'docid' ),

),

//正则匹配

"category" => array(

"type" => "regex",

"match" => "#^/(software|game|video)/(.*)/(list_(.*).html)?$#",

"route" => array('action' => 'list' ),

"map" => array( 1 => 'data_type', 2 => 'cid',4 => 'page_num' ),

),

//使用动态结果 :a 表示action

"name" => array(

"type" => "rewrite", //Yaf_Route_Rewrite route

"match" => "/user-list/:a/:id", //match only /user-list/开头的

"route" => array(

'controller' => "user", //route to user controller,

'action' => ":a", //使用动态的action

),

),

);

$router->addConfig(new Ap_Config_Simple($routeConfig));

}

方式3:

/**

* Add a rewrite route to Yaf_Router route stack

*/

Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",

new Yaf_Route_rewrite(

"/product/:name/:id/*", //match request uri leading "/product"

array(

'controller' => "product", //route to product controller,

),

)

);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

PHP Yaf,详解php框架Yaf路由重写相关推荐

  1. 详解工作流框架Activiti的服务架构和组件

    摘要:通过这篇文章,可以对工作流有一个基本的认识,为后续工作流框架Activiti的学习打下坚实的基础. 本文分享自华为云社区<BPMN工作流的基本概念!详解工作流框架Activiti的服务架构 ...

  2. jsp漂亮的登录界面源码_【案例+源码】详解MVC框架模式及其应用

    案例+源码]详解MVC框架模式及其应用 写在开头: 首先我们需要知道,框架模式.模式.开发模式是三种不同的概念,但他们的目的都一样:解耦! 1.关于MVC框架模型 MVC是三个单词的缩写: M,Mod ...

  3. 多图详解Spring框架的设计理念与设计模式

    Spring作为现在最优秀的框架之一,已被广泛的使用,51CTO也曾经针对Spring框架中的JDBC应用做过报道.本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的 ...

  4. 详解Spring框架的异步请求

    文章目录 详解Spring框架的异步请求 1.导入响应的jar包(gson) 2.前端请求 3.后端逻辑处理并返回结果 详解Spring框架的异步请求 在开发过程中有异步请求和同步请求之分. 同步请求 ...

  5. easyswoole默认访问html,详解PHP框架EasySwoole

    安装 使用 Composer 安装 composer require easyswoole/easyswoole=3.xphp vendor/bin/easyswoole install 启动框架 p ...

  6. 详解spring框架入门到精通

    spring概述 spring框架的优点 spring框架的组成 spring核心IOC IOC概述 IOC入门案例 创建maven jar工程 引入spring的依赖 引入spring的核心配置文件 ...

  7. 抖音android x86,抖音数据采集教程,详解Hook框架frida,让你在逆向工作中效率成倍提升!...

    免责声明:本文档仅供学习与参考,请勿用于非法用途!否则一切后果自负. 一.frida简介frida是一款基于python + java 的hook框架,可运行在androidioslinuxwinos ...

  8. 详解Hook框架frida,为工作效率提速!

    一.frida简介 frida是一款基于python + java 的hook框架,可运行在androidioslinuxwinosx等各平台,主要使用动态二进制插桩技术.本期"安仔课堂&q ...

  9. 详解RPC框架核心原理

    RPC概念: RPC(Remote Procedure Call):远程过程调用.服务调用者可以像调用本地接口一样调用远程的服务提供者,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP).序列 ...

最新文章

  1. Partial Class部分类
  2. python对话框机制_Chromium 新的弹窗机制以及 HTML 的 dialog 元素
  3. python itertools product函数
  4. oracle9i在window server 2003 sp2 企业版突破1.7G内存限制
  5. 【阿里云 Linux 服务器】在阿里云购买的 Linux 或者 Windows 服务器,在用 putty 访问的时候不知道用户名密码怎么办?
  6. ansi编码_Java 字符编码
  7. 20155307 《Java程序设计》课堂实践项目数据库
  8. SQL Server 2005 无法连接到服务器,error:26
  9. linux(CentOS)下Mrtg的安装詳解
  10. ios跨线程通知_iOS多线程编程指南(三)Run Loop
  11. GB35114—③、证书和密钥要求、基本功能要求及性能要求
  12. 使用matplotlib绘制高级图表
  13. PLC控制系统设计的基本原则和步骤
  14. 视频 Docker 学习(高级篇)
  15. 项目总结—jQuery EasyUI-DataGrid 拼表及查看详情
  16. aso优化师是什么_来肯云商app官网下载_做ASO优化师,只懂刷榜就够了吗
  17. 二阶系统级联_IIR数字滤波器的级联型结构中每个二阶级联子系统的系数可多带带控制一对零点或极点,有利于控制系统的频响...
  18. python画简便的图片-用python简单处理图片(5):图像直方图
  19. 验证码爬取并识别-云大urp教务系统大作战(1)
  20. 【Web前端大作业实例网页代码】html+css新闻资讯网页带dw模板和登陆注册(9页)

热门文章

  1. 穷人冲冲冲:为什么总是“坏人”赚钱?
  2. 2022-2028全球长波红外相机和相机内核行业调研及趋势分析报告
  3. ygo游戏王卡组_游戏王 WCS游戏王世界大会前三强卡组,淘气仙星成为比赛冠军卡组...
  4. 申宝在线炒股沪指下探回升
  5. 取消windowsXP桌面图标下的蓝色阴影
  6. 数据库复习10——PL/SQL
  7. 深大uooc大学生心理健康章节答案第六章
  8. STM32F407关于ADC 性能问题讨论
  9. Linux命令中.和..是什么?
  10. 去宣讲会的作用-一次奇妙的经历