php实现简单路由实现伪静态
发布:smiling 来源: PHP粉丝网 添加日期:2024-09-26 20:47:18 浏览: 评论:0
这篇文章主要为大家详细介绍了php如何实现简单路由实现伪静态,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下。
伪静态作用
增强搜索引擎的友好性:通过改变动态的网页的URL,使之看起来像静态网页,伪静态技术有助于提高网站在搜索引擎中的表现,使网站内容更易被搜索引擎抓取和索引。
提升用户信任度和体验:伪静态的URL后缀方式与静态网页相似,这有助于提升用户对网站的信任度。同时,伪静态技术也能改善用户对网站的整体体验,因为静态URL通常看起来更加整洁和专业。
缓解服务器负担:伪静态技术通过减少服务器响应请求的次数,可以有效减轻服务器的负担,特别是在高并发访问的情况下。
提高关键词排名:在某些搜索引擎中,伪静态技术可以通过提高关键词的相关性来提升网站的排名。例如,谷歌会以特殊方式展示与搜索关键词高度相关的网站,从而提高这些网站的点击率。
具体实现
将?后面的参数转化为不带?的url地址
将参数值放到地址上
将参数名放到路由上
尽量将url后缀变为.html
参数识别
通过服务器软件url重写统一入口
通过统一路由处理函数将地址及路由参数变为普通带?的地址
通过统一路由处理函数将参数添加进系统变量
通过统一路由处理函数确定要执行的文件
require要执行的文件
配合统一入口加命名空间简直完美
缓存
为统一路由处理函数得到的普通带?的地址添加id
require要执行的文件用ob处理得到结果及文件类型写入缓存文件
通过id获取缓存文件,没有缓存则ob require
一点代码
路由处理 //只针对get请求 string类型参数
路由定义
- <?php
- define('route',[
- [
- '/detail/{$id}.html',
- '/detail.php'
- ],
- [
- '/detail/{$id}/{$key}.html',
- '/detail.php'
- ],
- ]);
路由处理 //将参数添加进$_GET
- <?php
- namespace ppt\core;
- class Route
- {
- public static function addRouteParam($s)
- {
- $url = $s;
- $params = [];
- $route_params = [];
- $route_param_keys = [];
- $route_param_values = [];
- foreach (route as $item){
- $route_tmp = preg_replace('/\{\$[\w]+\}/','[\w]+',$item[0]);
- $route_tmp = str_replace(['/','.'],['\/','\.'],$route_tmp);
- if(preg_match('/^'.$route_tmp.'(\?[\s\S]+)?$/i',$s)){
- preg_match_all('/\{\$[\w]+\}/',$item[0],$route_param_keys);
- if(!emptyempty($route_param_keys)){
- $route_param_keys = str_replace(['{','$','}'],'',$route_param_keys[0]);
- preg_match_all('/[\w]+/',$s,$route_param_values);
- if(emptyempty($route_param_values)){
- break;
- }
- if(strpos($s,'?')!==false){
- if(!emptyempty(parse_url($s)['query'])){
- parse_str(parse_url($s, PHP_URL_QUERY), $params);
- }
- }
- $route_param_values = $route_param_values[0];
- $file = $item[1];
- array_unshift($route_param_keys,'file');
- for($i=1;$i<count($route_param_keys);$i++){
- $route_params[$route_param_keys[$i]] = $route_param_values[$i];
- }
- $params = array_merge($params,$route_params);
- $url = $file.'?'.http_build_query($params);
- }
- break;
- }
- }
- return $url;
- }
- }
参数提取及调用执行文件
- public static function run($s)
- {
- $_ppt_file = app.'/code'.parse_url($s)['path'];
- if(preg_match('/\/$/',$_ppt_file)) {
- $_ppt_file.='index.php';
- }
- if(strpos($s,'?')!==false){
- if(!emptyempty(parse_url($s)['query'])){
- parse_str(parse_url($s, PHP_URL_QUERY), $_params);
- foreach ($_params as $_key=>$_item){
- $_GET[$_key] = $_item;
- }
- }
- }
- if(!is_file($_ppt_file))
- http_code_404();
- require $_ppt_file;
- }
后续思考
如此这般php的作用变为生成及控制静态文件
最优秀的伪静态就是静态,故怎样用php实现没有php?
Tags: php路由伪静态 php伪静态
- 上一篇:php解决跨域问题的方法详解
- 下一篇:最后一页
相关文章
- ·php伪静态的写法,apache伪静态规则(2014-07-08)
- ·php伪静态之APACHE篇(2021-01-31)
- ·php 伪静态之IIS篇(2021-01-31)
- ·开启PHP的伪静态模式(2021-07-03)
- ·PHP页面静态化——纯静态与伪静态用法详解(2022-03-13)
- ·解析基于php伪静态的实现方法(2022-07-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)