通常为了友好的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中添加初始化函数,函数名可按自己需求取,必需以_开头才会被调用
<?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,
),
)
);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Yaf框架路由重写
# php
# 路由重写
# ThinkPHP、Zend Framework2、Yaf、Laravel框架路由大比拼
# PHP扩展框架之Yaf框架的安装与使用
# PHP Yaf框架的简单安装使用教程(推荐)
# yii
# CI
# yaf框架+smarty模板使用方法
# 在PHP 7下安装Swoole与Yar
# Yaf的方法教程
# ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法
# 基于yaf框架和uploadify插件
# 做的一个导入excel文件
# 查看并保存数据的功能
# PHP7.1安装yaf扩展的方法
# Ubuntu上安装yaf扩展的方法
# 详解Yaf框架PHPUnit集成测试方法
# Yaf框架封装的MySQL数据库操作示例
# 重写
# 自己的
# 在这里
# 放在
# 才会
# 也可
# 几种
# 可按
# 配置文件
# 大家多多
# 日后
# 路由协议
# 主要有
# simple
# PATH_INFO
# map
# amp
# module
# router
# extends
相关文章:
如何通过PHP快速构建高效问答网站功能?
如何通过FTP服务器快速搭建网站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
建站之星展会模板:智能建站与自助搭建高效解决方案
焦点电影公司作品,电影焦点结局是什么?
建站之星如何修改网站生成路径?
西安大型网站制作公司,西安招聘网站最好的是哪个?
建站主机服务器选型指南与性能优化方案解析
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
建站之星客服服务时间及联系方式如何?
如何在西部数码注册域名并快速搭建网站?
Python文件管理规范_工程实践说明【指导】
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
建站之星伪静态规则如何设置?
如何在建站之星绑定自定义域名?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
广州商城建站系统开发成本与周期如何控制?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
深圳网站制作的公司有哪些,dido官方网站?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
历史网站制作软件,华为如何找回被删除的网站?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
网站制作服务平台,有什么网站可以发布本地服务信息?
如何在局域网内绑定自建网站域名?
招贴海报怎么做,什么是海报招贴?
制作宣传网站的软件,小红书可以宣传网站吗?
如何用PHP快速搭建高效网站?分步指南
建站之星后台密码如何安全设置与找回?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
如何通过智能用户系统一键生成高效建站方案?
定制建站哪家更专业可靠?推荐榜单揭晓
如何在云虚拟主机上快速搭建个人网站?
已有域名能否直接搭建网站?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
香港服务器网站推广:SEO优化与外贸独立站搭建策略
济南网站制作的价格,历城一职专官方网站?
如何在VPS电脑上快速搭建网站?
家庭服务器如何搭建个人网站?
为什么Go需要go mod文件_Go go mod文件作用说明
建站之星免费模板:自助建站系统与智能响应式一键生成
SQL查询语句优化的实用方法总结
大连网站设计制作招聘信息,大连投诉网站有哪些?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
自助网站制作软件,个人如何自助建网站?
微信小程序 五星评分(包括半颗星评分)实例代码
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何高效利用亚马逊云主机搭建企业网站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
*请认真填写需求信息,我们会在24小时内与您取得联系。