php实现简单路由实现伪静态 |
伪静态作用增强搜索引擎的友好性:通过改变动态的网页的URL,使之看起来像静态网页,伪静态技术有助于提高网站在搜索引擎中的表现,使网站内容更易被搜索引擎抓取和索引 。 提升用户信任度和体验:伪静态的URL后缀方式与静态网页相似,这有助于提升用户对网站的信任度 。同时,伪静态技术也能改善用户对网站的整体体验,因为静态URL通常看起来更加整洁和专业 。 缓解服务器负担:伪静态技术通过减少服务器响应请求的次数,可以有效减轻服务器的负担,特别是在高并发访问的情况下 。 提高关键词排名:在某些搜索引擎中,伪静态技术可以通过提高关键词的相关性来提升网站的排名 。例如,谷歌会以特殊方式展示与搜索关键词高度相关的网站,从而提高这些网站的点击率 。 具体实现将?后面的参数转化为不带?的url地址
参数识别
缓存
一点代码路由处理 //只针对get请求 string类型参数 路由定义 <?php
define('route',[
[
'/detail/{$id}.html',
'/detail.php'
],
[
'/detail/{$id}/{$key}.html',
'/detail.php'
],
]);
路由处理 //将参数添加进$_GET <?php
namespace pptcore;
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.'(?[sS]+)?$/i',$s)){
preg_match_all('/{$[w]+}/',$item[0],$route_param_keys);
if(!empty($route_param_keys)){
$route_param_keys = str_replace(['{','$','}'],'',$route_param_keys[0]);
preg_match_all('/[w]+/',$s,$route_param_values);
if(empty($route_param_values)){
break;
}
if(strpos($s,'?')!==false){
if(!empty(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(!empty(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? 到此这篇关于php实现简单路由实现伪静态的文章就介绍到这了,更多相关php伪静态内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! |