PHP僞靜態的處理
1,僞靜態簡介:
僞靜態,實際是動態的網頁。只是將網頁的URL改變成類似靜態的。
類似如下:
domain/niushaogang.php?id=2&status=0 ---> /niushaogang.php/2/1.html
處理方法:1,PATH_INFO模式正則處理(輸入靜態頁面的時候$_SERVER path_info中會有path_info把後面的路徑輸出)
2,服務器rewrite重寫(Nginx服務器默認不支持path_info模式)
2,僞靜態的生成
1,PATH_INFO方法
http://niushao.net/2/3/4.html $_SERVER['PATH_INFO'] = /2/3/4.html
利用正則取出關鍵數據,根據數據庫查詢即可
$reg = "/^\/(\d+)\/(\d+)\/(\d+).html/";
代碼:
<?php
echo "<pre>";
//http://niushao.net/2/3/4.html;
//http://niushao.net?a=2&b=3&c=4;
//print_r($_SERVER);
$reg = "/^\/(\d+)\/(\d+)\/(\d+).html/";
preg_match($reg,$_SERVER['PATH_INFO'],$key_arr);
/*
echo "<pre>";
print_r($key_arr);
echo "</pre>";
*/
$id1 = $key_arr[1];
$id2 = $key_arr[2];
$id3 = $key_arr[3];
if(preg_match($reg,$_SERVER['PATH_INFO'],$key_arr)){
//假如匹配成功,就可以用$id1,$id2,$id3來訪問數據庫根據條件查詢數據以及返回數據
echo "$id1-$id2-$id3";
}else{
//假如匹配不成功,到這裏,防止用戶亂輸
}
?>
2,服務器rewrite重寫
apache:
綁定域名的權限中,開啓rewrite的引擎
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}!-f
RewriteRule ^/([0-9]*).html$/?id1=$1
Nginx:後期會在nginx配置文件詳解中寫Nginx的rewrite重寫功能