php實現(xiàn)簡單路由實現(xiàn)偽靜態(tài)
偽靜態(tài)作用
增強搜索引擎的友好性:通過改變動態(tài)的網(wǎng)頁的URL,使之看起來像靜態(tài)網(wǎng)頁,偽靜態(tài)技術有助于提高網(wǎng)站在搜索引擎中的表現(xiàn),使網(wǎng)站內(nèi)容更易被搜索引擎抓取和索引。
提升用戶信任度和體驗:偽靜態(tài)的URL后綴方式與靜態(tài)網(wǎng)頁相似,這有助于提升用戶對網(wǎng)站的信任度。同時,偽靜態(tài)技術也能改善用戶對網(wǎng)站的整體體驗,因為靜態(tài)URL通常看起來更加整潔和專業(yè)。
緩解服務器負擔:偽靜態(tài)技術通過減少服務器響應請求的次數(shù),可以有效減輕服務器的負擔,特別是在高并發(fā)訪問的情況下。
提高關鍵詞排名:在某些搜索引擎中,偽靜態(tài)技術可以通過提高關鍵詞的相關性來提升網(wǎng)站的排名。例如,谷歌會以特殊方式展示與搜索關鍵詞高度相關的網(wǎng)站,從而提高這些網(wǎng)站的點擊率。
具體實現(xiàn)
將?后面的參數(shù)轉化為不帶?的url地址
- 將參數(shù)值放到地址上
- 將參數(shù)名放到路由上
- 盡量將url后綴變?yōu)?html
參數(shù)識別
- 通過服務器軟件url重寫統(tǒng)一入口
- 通過統(tǒng)一路由處理函數(shù)將地址及路由參數(shù)變?yōu)槠胀◣?的地址
- 通過統(tǒng)一路由處理函數(shù)將參數(shù)添加進系統(tǒng)變量
- 通過統(tǒng)一路由處理函數(shù)確定要執(zhí)行的文件
- require要執(zhí)行的文件
- 配合統(tǒng)一入口加命名空間簡直完美
緩存
- 為統(tǒng)一路由處理函數(shù)得到的普通帶?的地址添加id
- require要執(zhí)行的文件用ob處理得到結果及文件類型寫入緩存文件
- 通過id獲取緩存文件,沒有緩存則ob require
一點代碼
路由處理 //只針對get請求 string類型參數(shù)
路由定義
<?php
define('route',[
[
'/detail/{$id}.html',
'/detail.php'
],
[
'/detail/{$id}/{$key}.html',
'/detail.php'
],
]);
路由處理 //將參數(shù)添加進$_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(!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;
}
}
參數(shù)提取及調(diào)用執(zhí)行文件
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;
}
后續(xù)思考
如此這般php的作用變?yōu)樯杉翱刂旗o態(tài)文件
最優(yōu)秀的偽靜態(tài)就是靜態(tài),故怎樣用php實現(xiàn)沒有php?
到此這篇關于php實現(xiàn)簡單路由實現(xiàn)偽靜態(tài)的文章就介紹到這了,更多相關php偽靜態(tài)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
php實現(xiàn)多維數(shù)組中每個單元值(數(shù)字)翻倍的方法
這篇文章主要介紹了php實現(xiàn)多維數(shù)組中每個單元值(數(shù)字)翻倍的方法,涉及php操作數(shù)組的技巧,需要的朋友可以參考下2015-02-02
PHP單例模式Singleton Pattern的原理與實現(xiàn)介紹
單例就是單實例的意思,即在系統(tǒng)全局,一個類只創(chuàng)建一個對象,并且在系統(tǒng)全局都可以訪問這個對象而不用重新創(chuàng)建。本文將通過示例為大家詳細講解Java單例模式的使用,需要的可以參考一下2023-03-03
PHP輸出兩個數(shù)字中間有多少個回文數(shù)的方法
這篇文章主要介紹了PHP輸出兩個數(shù)字中間有多少個回文數(shù)的方法,實例分析了回文數(shù)的概念與相關判斷技巧,需要的朋友可以參考下2015-03-03

