再有一種就是偽靜態方式,即使用者和搜尋引擎看到的是.html尾碼的靜態頁面,但實際上它還是動態程式,只不過是通過某種方式進行了偽裝。
這種方式也有兩種實現方式:
第一種是通過web伺服器,進行url rewrite實現連結的靜態化,下面以apache為例來說明一下其實現方式。對於有伺服器配置許可權的使用者,推薦使用apache的mod_rewrite模組,這裡假設已經安裝好mod_rewrite模組。開啟apache的設定檔,找到相應主機的部分,添加以下代碼:
| 代碼如下 |
複製代碼 |
rewriteengine on rewriterule ^/abc/([a-z]+)/([0-9]+).html$ /abc.php?action=$1&id=$2 |
然後在shell裡執行service httpd reload,讓apache重新載入配置就好了。
但對於我們大多數人來講,我們購買的只是空間,根本沒有許可權去修改apache的設定檔,那就沒有辦法了嗎?不,當然有辦法,首先我們進入到我們的空間的根目錄下(如public_html),然後建立一個檔案名稱為.htaccess的檔案。這個檔案內容基本如下:
| 代碼如下 |
複製代碼 |
rewriteengine on rewritebase / rewriterule ^post/([0-9]+).htm read.php?1 rewriterule ^post/([0-9]+)_([0-9]+).htm read.php?1&page=2 rewriterule ^post/([0-9]+)_([0-9]+)_([0-9]+).htm read.php?1&page=2&=3 |
php程式寫法
| 代碼如下 |
複製代碼 |
function mod_rewrite(){ if ( isset ( $_server [ ’ path_info ’ ])){ $url = substr ( $_server [ ’ path_info ’ ] , 1 ); $url = explode ( ’ / ’ , $url ); foreach ( $url as $key => $value ){ if ( $key % 2 != 1 ){ if ( $value != ’’ ) $_get [ $value ] = $url [ $key + 1 ]; $querystring [] = $value . ’ = ’ . $url [ $key + 1 ]; } } $_server [ ’ query_string ’ ] = implode ( " & " , $querystring ); $_server [ ’ php_self ’ ] = substr ( $_server [ ’ php_self ’ ] , 0 , strpos ( $_server [ ’ php_self ’ ] , ’ .php ’ ) + 4 ); $_server [ ’ request_uri ’ ] = $_server [ ’ php_self ’ ] . ’ ? ’ . $_server [ ’ query_string ’ ]; } } |