偽靜態(tài)

靜態(tài)網(wǎng)頁

比如xxx網(wǎng)站上放了一個abc.html文件,你想訪問它就直接輸入xxx. com/abc.html。Web服務(wù)器看到這樣的地址就直接找到這個文件輸出給客戶端。

動態(tài)網(wǎng)頁

假如你想做一個顯示當(dāng)前時間的頁面,那么就可以寫個PHP文件,然后訪問xxx. com/abc.php。Web服務(wù)器看到這樣的地址,找到abc.php這個文件,會交給PHP執(zhí)行后返回給客戶端。而動態(tài)網(wǎng)頁往往要輸入?yún)?shù),所以地址就變成xxx. com/abc.php?a=1&b=2。

搜索引擎比較煩這種帶問號的動態(tài)網(wǎng)頁,因為參數(shù)可以隨便加,而返回內(nèi)容卻不變,所以會對這種網(wǎng)頁降權(quán)。于是有了mod_rewrite,它可以重新映射地址。

rewrite

Rewrite是一種服務(wù)器的重寫技術(shù),它可以使得服務(wù)器可以支持 URL 重寫,是一種最新流行的服務(wù)器技術(shù)。它還可以實現(xiàn)限制特定IP訪問網(wǎng)站的功能

比如當(dāng)前這個頁面的地址 http://www.xxx.com/post/20153311,Web服務(wù)器收到請求后會重新映射為 www.xxx.com/post.php?id=20153311,然后再執(zhí)行那個PHP程序。(以上網(wǎng)址均為假設(shè))這樣,在內(nèi)部不改變的情況下,對外呈現(xiàn)出來的網(wǎng)址變成了沒有問號的象靜態(tài)網(wǎng)頁的網(wǎng)址一樣。于是有人給起了個名字叫“偽靜態(tài)”。其實也沒什么偽的,就是沒有問號的靜態(tài)網(wǎng)址,讓搜索引擎舒服點而已。

函數(shù)計算 php runtime 簡單實現(xiàn) rewrite 的一種方法

先以簡單的nginx 中的一個簡單的 rewrite 為例:

location ~ ^/(\w+)$ {
rewrite /index.php?sub=$1;
}
location ~ ^/post/(\w+)/(\d+)$ {
rewrite /post.php?class=$1&id=$2;
}

php url rewrite 簡單實現(xiàn)

<?php
function rewrite_urls($s)
{
$in = array(
'|^/post/(\\w+)/(\\d+)$|',
'|^/(\\w+)$|'
);
$out = array(
'/post.php?class=$1&id=$2',
'/index.php?sub=$1',

);
return preg_replace($in, $out, $s);
}
$post_url = '/post/literatrue/34';
echo rewrite_urls($post_url) .PHP_EOL;
$index_url = '/admin';
echo rewrite_urls($index_url) .PHP_EOL;

執(zhí)行輸出結(jié)果:

/post.php?class=literatrue&id=34
/index.php?sub=admin

因此在使用 php runtime的時候,根據(jù)收到請求的uri(假設(shè)是/post/literatrue/34), 執(zhí)行 rewrite_urls 函數(shù)(rewrite 規(guī)則填寫在這個函數(shù)的 $in 和 $out 中), 然后將 rewrite 后的 uri (/post.php?class=literatrue&id=34) 作為調(diào)用 fcPhpCgiProxy.requestPhpCgi 函數(shù)時,傳入?yún)?shù) $fastCgiParams 的一對 key-value。

贊(0)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-62778877-8306;郵箱:fanjiao@west.cn。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明出處:西部數(shù)碼知識庫 » php runtime、http web中rewrite淺解和方案

登錄

找回密碼

注冊