案例分析(path_info模式)
http://static/newlist.php?type=2&category_id=1 //未处理
http://static/newlist.php/2/1.html //已处理
1.通过正则表达式去分析伪静态url地址
if(pre_match('/^/(d+)/(d+).html/',SERVER['PATH_INFO'],$arr)){
$type=$arr[1];
$category_id=$arr[2];
}
2.apache下rewrite配置
1)虚拟域名配置
httpd.conf文件中开启相关模式
LoadModule rewrite_module modules/mod_rewrite.so //开启从写模块
Include conf/extra/httpd-vhosts.conf //引入从写配置文件
2)httpd_vhosts.conf配置文件配置相关信息
http://static.com/detail.php?id=1 //未处理
http://static.com/detail/1.html //已处理
<VirtualHost 127.0.0.1:80>
RewriteEngine on //服务器开启rewrite引擎
//判断是否存在重写后一样的文件,如果有则访问。没有则访问重写后的文件
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^/detail/([0-9]*).html$ /detail.php?id=$1 //书写规则
</VirtualHost>
3.nginx下rewrite配置
server {
listen 80;
server_name abc.com;
rewrite ^/detail/(d+)html$ /detail.php?id=$1 last;
}