PHP僞靜態的處理

PHP僞靜態的處理

1,僞靜態簡介:

僞靜態,實際是動態的網頁。只是將網頁的URL改變成類似靜態的。
類似如下:
    domain/niushaogang.php?id=2&status=0 --->   /niushaogang.php/2/1.html

處理方法:1,PATH_INFO模式正則處理(輸入靜態頁面的時候$_SERVER path_info中會有path_info把後面的路徑輸出)
        2,服務器rewrite重寫(Nginx服務器默認不支持path_info模式)

2,僞靜態的生成


1,PATH_INFO方法
    http://niushao.net/2/3/4.html      $_SERVER['PATH_INFO'] = /2/3/4.html

    利用正則取出關鍵數據,根據數據庫查詢即可

    $reg = "/^\/(\d+)\/(\d+)\/(\d+).html/";

代碼:

    <?php
        echo "<pre>";
        //http://niushao.net/2/3/4.html;
        //http://niushao.net?a=2&b=3&c=4;
        //print_r($_SERVER);
        $reg = "/^\/(\d+)\/(\d+)\/(\d+).html/";
        preg_match($reg,$_SERVER['PATH_INFO'],$key_arr);
        /*
        echo "<pre>";
        print_r($key_arr);
        echo "</pre>";
        */
        $id1 = $key_arr[1];
        $id2 = $key_arr[2];
        $id3 = $key_arr[3];

        if(preg_match($reg,$_SERVER['PATH_INFO'],$key_arr)){ 
            //假如匹配成功,就可以用$id1,$id2,$id3來訪問數據庫根據條件查詢數據以及返回數據
            echo "$id1-$id2-$id3";
        }else{ 
            //假如匹配不成功,到這裏,防止用戶亂輸
        }
    ?>

2,服務器rewrite重寫

    apache:

        綁定域名的權限中,開啓rewrite的引擎
            RewriteEngine on
            RewriteCond  %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-d
            RewriteCond  %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-f
            RewriteRule ^/([0-9]*).html$/?id1=$1

    Nginx:後期會在nginx配置文件詳解中寫Nginx的rewrite重寫功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章