欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php實現(xiàn)簡單路由實現(xiàn)偽靜態(tài)

 更新時間:2024年04月18日 10:18:53   作者:etafort  
這篇文章主要為大家詳細介紹了php如何實現(xiàn)簡單路由實現(xiàn)偽靜態(tài),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

偽靜態(tài)作用

增強搜索引擎的友好性:通過改變動態(tài)的網(wǎng)頁的URL,使之看起來像靜態(tài)網(wǎng)頁,偽靜態(tài)技術(shù)有助于提高網(wǎng)站在搜索引擎中的表現(xiàn),使網(wǎng)站內(nèi)容更易被搜索引擎抓取和索引。

提升用戶信任度和體驗:偽靜態(tài)的URL后綴方式與靜態(tài)網(wǎng)頁相似,這有助于提升用戶對網(wǎng)站的信任度。同時,偽靜態(tài)技術(shù)也能改善用戶對網(wǎng)站的整體體驗,因為靜態(tài)URL通??雌饋砀诱麧嵑蛯I(yè)。

緩解服務(wù)器負擔:偽靜態(tài)技術(shù)通過減少服務(wù)器響應(yīng)請求的次數(shù),可以有效減輕服務(wù)器的負擔,特別是在高并發(fā)訪問的情況下。

提高關(guān)鍵詞排名:在某些搜索引擎中,偽靜態(tài)技術(shù)可以通過提高關(guān)鍵詞的相關(guān)性來提升網(wǎng)站的排名。例如,谷歌會以特殊方式展示與搜索關(guān)鍵詞高度相關(guān)的網(wǎng)站,從而提高這些網(wǎng)站的點擊率。

具體實現(xiàn)

將?后面的參數(shù)轉(zhuǎn)化為不帶?的url地址

  • 將參數(shù)值放到地址上
  • 將參數(shù)名放到路由上
  • 盡量將url后綴變?yōu)?html

參數(shù)識別

  • 通過服務(wù)器軟件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處理得到結(jié)果及文件類型寫入緩存文件
  • 通過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?

到此這篇關(guān)于php實現(xiàn)簡單路由實現(xiàn)偽靜態(tài)的文章就介紹到這了,更多相關(guān)php偽靜態(tài)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論