案例分析(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;
  }
posted on 2021-04-03 17:11  河岸晚风  阅读(141)  评论(0编辑  收藏  举报