PHP伪静态的处理

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

你可能感兴趣的:(伪静态)