偽靜態
靜態網頁
比如xxx網站上放了一個abc.html文件,你想訪問它就直接輸入xxx. com/abc.html。Web服務器看到這樣的地址就直接找到這個文件輸出給客戶端。
動態網頁
假如你想做一個顯示當前時間的頁面,那么就可以寫個PHP文件,然后訪問xxx. com/abc.php。Web服務器看到這樣的地址,找到abc.php這個文件,會交給PHP執行后返回給客戶端。而動態網頁往往要輸入參數,所以地址就變成xxx. com/abc.php?a=1&b=2。
搜索引擎比較煩這種帶問號的動態網頁,因為參數可以隨便加,而返回內容卻不變,所以會對這種網頁降權。于是有了mod_rewrite,它可以重新映射地址。
rewrite
比如當前這個頁面的地址 http://www.xxx.com/post/20153311,Web服務器收到請求后會重新映射為 www.xxx.com/post.php?id=20153311,然后再執行那個PHP程序。(以上網址均為假設)這樣,在內部不改變的情況下,對外呈現出來的網址變成了沒有問號的象靜態網頁的網址一樣。于是有人給起了個名字叫“偽靜態”。其實也沒什么偽的,就是沒有問號的靜態網址,讓搜索引擎舒服點而已。
函數計算 php runtime 簡單實現 rewrite 的一種方法
先以簡單的nginx 中的一個簡單的 rewrite 為例:
location ~ ^/(/w+)$ { rewrite /index.php?sub=$1;}location ~ ^/post/(/w+)/(/d+)$ { rewrite /post.php?class=$1&id=$2;}
php url rewrite 簡單實現
<?phpfunction 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;
執行輸出結果:
/post.php?class=literatrue&id=34/index.php?sub=admin
因此在使用 php runtime
的時候,根據收到請求的uri
(假設是/post/literatrue/34
), 執行 rewrite_urls
函數(rewrite
規則填寫在這個函數的 $in
和 $out
中), 然后將 rewrite
后的 uri (/post.php?class=literatrue&id=34)
作為調用 fcPhpCgiProxy.requestPhpCgi
函數時,傳入參數 $fastCgiParams
的一對 key-value
。
以上就是php runtime、http web中rewrite淺解和方案的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答