久久男人AV资源网站无码_乱人伦人妻精品一区二区_亚洲国产精久久久久久久_狠狠躁夜夜躁人人爽天天BL

php中偽靜態的實現原理和實現方法

2014-07-15 宇易網絡 3084

提(ti)到偽(wei)靜(jing)態(tai)(tai)這個(ge)詞,相(xiang)信(xin)有點網站(zhan)基礎(chu)的人都不會陌生。為了迎(ying)合搜索引擎的友好度,現(xian)在(zai)大量(liang)的網站(zhan)都在(zai)使用偽(wei)靜(jing)態(tai)(tai)的方(fang)式實現(xian)對(dui)URL動態(tai)(tai)參數的重寫。本(ben)文中泰州網站(zhan)建設(she)公(gong)司宇(yu)易網絡將會跟大家一起探討一下偽(wei)靜(jing)態(tai)(tai)的實現(xian)原理和(he)實現(xian)方(fang)法(fa)。

我們(men)先(xian)來(lai)說一(yi)下實現方法:

set_time_limit(10);
$id=$_GET["id"];
$id=str_replace(" ","%20",$id);
$id=str_replace("=","%3D",$id);
$url="//www.xxx.com/index.php/library/more/id/$id.html";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"$url");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//啟用時將curl_init()獲取的信息以文件流的形式返回,而不是直接輸出
curl_setopt($ch,CURLOPT_HEADER,0);//啟用時會將頭文件的信息作為數據流輸出
$output=curl_exec($ch);
curl_close($ch);
print_r($output);

我們將該文件放入本地Apache服務(wu)器(qi)的根(gen)目錄中,名(ming)稱為test.php。在瀏覽器(qi)中輸入//127.0.0.1/test.php?id=1


偽靜態實現的方法一(利用Apache服務器的功能):

1、檢查Apache是(shi)否支持mod_rewrite

2、讓Apache 支持.htaccess

3、建立(li).htaccess文件

4、規則:


RewriteEngine on
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2
([a-zA-Z]{1,})-([0-9]{1,}) 是 URL長啥樣?


$1 是([a-zA-Z]{1,}) 所匹配(pei)的(de)

$2 是[0-9]{1,} 所(suo)匹配的

比(bi)如說:www.xx.com/page-18.html,真(zhen)實的URL如下:action = page, id = 18

PHP偽靜態實現方法二(編碼實現)

$Php2Html_FileUrl = $_SERVER["REQUEST_URI"]

echo $Php2Html_FileUrl


$Php2Html_UrlString = str_replace("?","",str_replace("/","",strrchr(strrchr($Php2Html_FileUrl,"/"),"?")) ))
/*
內層的strrchr出來:/test.php?id|1@action|2
外層的strrchr出來:id|1@action|2
內層的str_replace出來:把 / 號去掉,本例子 沒有
外層的str_replace出來:把 ?號去掉,本例子 沒有
*/
$Php2Html_UrlQueryStrList = explode("@",$Php2Html_UrlString);
/*把str變成以@為界限劃分的數組:id|1 和 action|2*/

foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
  $Php2Html_TmpArray = explode("|",$Php2Html_UrlQueryStr);
  /* id => 1 和 action => 2*/
  $_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
$Php2Html_UrlString = str_replace("?","",str_replace("/","",strrchr(strrchr($Php2Html_FileUrl,"/"),"?")) ))
/*
內層的strrchr出來:/test.php?id|1@action|2
外層的strrchr出來:id|1@action|2
內層的str_replace出來:把 / 號去掉,本例子 沒有
外層的str_replace出來:把 ?號去掉,本例子 沒有
*/
$Php2Html_UrlQueryStrList = explode("@",$Php2Html_UrlString);
/*把str變成以@為界限劃分的數組:id|1 和 action|2*/
foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
{
  $Php2Html_TmpArray = explode("|",$Php2Html_UrlQueryStr);
  /* id => 1 和 action => 2*/
  $_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
}
PHP偽靜態實現方法三(編碼實現)



$filename = basename($_SERVER["SCRIPT_NAME"]);
echo $_SERVER["SCRIPT_NAME"];
echo $filename;

if(strtolower($filename) == 'test.php'){
    if(!empty($_GET[id])){
        $id=intval($_GET[id]);
        echo $id;
        $action = intval($_GET[action]);
        echo $action;
    }else{
    
        $nav=$_SERVER["REQUEST_URI"];
        $script=$_SERVER["SRCIPT_NAME"];
    
        //這句話應該是把URL前面那段給搞掉。。剩下 "1/2"之類的。。  
        $nav=ereg_replace("$script","",urldecode($nav));
        echo $nav;
        
        $vars = explode("/",$nav);
        print_r($vars);
        $id=intval($vars[1]);
        $action=intval($vars[2]);
    }
    echo $id.'&'.$action;
}
$filename = basename($_SERVER["SCRIPT_NAME"]);
echo $_SERVER["SCRIPT_NAME"];
echo $filename;
if(strtolower($filename) == 'test.php'){
    if(!empty($_GET[id])){
        $id=intval($_GET[id]);
        echo $id;
        $action = intval($_GET[action]);
        echo $action;
    }else{
  
        $nav=$_SERVER["REQUEST_URI"];
        $script=$_SERVER["SRCIPT_NAME"];
  
        //這句話應該是把URL前面那段給搞掉。。upg4hw剩下 "1/2"之類的。。
        $nav=ereg_replace("$script","",urldecode($nav));
        echo $nav;
      
        $vars = explode("/",$nav);
        print_r($vars);
        $id=intval($vars[1]);
        $action=intval($vars[2]);
    }
    echo $id.'&'.$action;
}
PHP偽靜態實現方法四(編碼實現)



function mod_rewrite(){
    global $_GET;
    $nav = $_SERVER["REQUEST_URI"];
    $script_name = $_SERVER["SCRIPT_NAME"]
    
    $nav=substr(ereg_replace("$script_name"),"",urldecode($nav)),1);
    
    $nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//去掉尾部的htm或html



相關文章

展開
聯系電話: 客服QQ: