麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

phpwind的rewrite重寫(xiě)原理

2024-04-25 20:33:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

就是一般我們用echo print 輸出字符到頁(yè)面上的時(shí)候,意味著只要執(zhí)行到了echo,php就會(huì)立即輸出到客戶端,但php有幾個(gè)和緩沖相關(guān)的函數(shù),他可以控制你輸出的行為,就是不立馬輸出,而是等你調(diào)用了ob_flush/flush函數(shù),才輸出。

而pw就是利用了這個(gè)原理,等頁(yè)面所有的內(nèi)容都生成完畢了,最后調(diào)footer()時(shí),ob_get_contents(),獲取緩沖的內(nèi)容,通過(guò)正則批量替換url,構(gòu)造rewrite的url格式。

關(guān)于ob,其實(shí)有兩種主要的使用場(chǎng)景,一個(gè)是實(shí)現(xiàn)頁(yè)面壓縮輸出 - ob_gzhandler;再一個(gè)是在ajax/自定義api返回?cái)?shù)據(jù)時(shí),程序執(zhí)行過(guò)程中,你不知道前面的程序是否有些意外的輸出字符如空格、空行等,他們?cè)跀?shù)據(jù)返回時(shí)會(huì)造成很多意外情況。

所以可以在你輸出數(shù)據(jù)前,清除前面的緩沖內(nèi)容,重新開(kāi)始輸出。

官方默認(rèn)的重寫(xiě)規(guī)則(注:重寫(xiě)是web服務(wù)器 - 如apache、nginx或應(yīng)用容器tomcat的功能,不是程序語(yǔ)言自己的功能),如pw的一條重寫(xiě)規(guī)則 - apache:

RewriteRule ^(.*)-htm-(.*)$ $1.php?$2

首先,我們分析他的構(gòu)成。當(dāng)我們打開(kāi) global.php 文件,找到 :

<?php

$db_obstart == 1 ? ob_start('ob_gzhandler') : ob_start();

?>

我們會(huì)發(fā)現(xiàn),這個(gè)全局文件打開(kāi)了一個(gè)ob_start,并且進(jìn)行一些判斷。這個(gè)是pw系統(tǒng)進(jìn)行rewrite的一個(gè)關(guān)鍵。

然后我們?cè)僬业絝ooter()函數(shù):

<?php

function footer(){

global $db,$db_obstart,$db_footertime,$db_htmifopen,$P_S_T,$mtablewidth,$db_ceoconnect,$wind_version,$imgpath,$stylepath,$footer_ad,$db_union,$dbinfo,$timestamp;

Update_ol();

if($db){

$qn=$db->query_num;

}

$ft_gzip=($db_obstart==1 ? "Gzip enabled" : "Gzip disabled").$db_union[3];

if ($db_footertime == 1){

$t_array = explode(' ',microtime());

$totaltime = number_format(($t_array[0]+$t_array[1]-$P_S_T),6);

$wind_spend = "Total $totaltime(s) query $qn,";

}

$ft_time=get_date($timestamp,'m-d H:i');

include PrintEot('footer');

$output = str_replace(array('<!--<!---->','<!---->'),array('',''),ob_get_contents());

if($db_htmifopen){

$output = preg_replace(

"/<a(s*[^>]+s*)href=(["|']?)([^"'>s]+.php?[^"'>s]+)(["|']?)/ies",

"Htm_cv('3','<a1href="')",

$output

);

}

ob_end_clean();

$db_obstart == 1 ? ob_start('ob_gzhandler') : ob_start();

echo $output;

flush;

exit;

}

?>

common.php中:

function parseHtmlUrlRewrite($html, $flag) {

return $flag ? preg_replace("//<a(/s*[^/>]+/s*)href/=([/"|/']?)((index|cate|thread|read|faq|rss)/.php/?[^/"/'>/s]+/s?)[/"|/']?/ies", "Htm_cv('//3','<a//1href=/"')", $html) : $html;

}</p> <p>/**

* url處理

*

* @param string $url

* @param string $tag

* @return string

*/

function Htm_cv($url, $tag) {

return stripslashes($tag) . urlRewrite($url) . '"';

}</p> <p>function urlRewrite($url) {

global $db_htmifopen, $db_dir, $db_ext;

if (!$db_htmifopen) return $url;

$tmppos = strpos($url, '#');

$add = $tmppos !== false ? substr($url, $tmppos) : '';

$turl = str_replace(array('.php?', '=', '&amp;', '&', $add), array($db_dir, '-', '-', '-', ''), $url);//pw的重寫(xiě)規(guī)則在這里進(jìn)行字符的替換

$turl != $url && $turl .= $db_ext;

return $turl . $add;

}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产免费一区二区三区视频 | 久久久久夜色精品国产老牛91 | 亚洲精品 欧美 | 亚洲第一精品在线 | 欧美一级毛片欧美一级成人毛片 | 国产精品69页 | 国产精品成人av片免费看最爱 | 九九视屏 | 日本在线播放一区二区三区 | 一本色道久久99精品综合蜜臀 | 性视频久久 | 免费a级毛片大学生免费观看 | 欧洲黄色一级视频 | 成人福利软件 | 西川av在线一区二区三区 | 成人免费福利 | 日日摸夜夜添夜夜添牛牛 | 日韩每日更新 | 成人毛片视频在线观看 | 91色成人 | 国产精品久久国产精麻豆96堂 | 圆产精品久久久久久久久久久 | 色妞欧美 | 国产免费美女 | 福利一区二区三区视频在线观看 | 天天操综 | 91久久久久 | 国产羞羞视频在线观看免费应用 | 国产精品美女久久久免费 | 国产亚洲精品久久久久久久软件 | 免费观看一区二区三区视频 | 久草在线资源福利站 | 欧美成在线视频 | 成人午夜免费网站 | 欧美日韩精品一区二区三区不卡 | 成人国产精品色哟哟 | 亚洲小视频在线观看,com | 操你啦免费视频 | 久久久久九九九女人毛片 | 国产精品99久久久久久宅女 | 特片网久久 |