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重写功能