当前位置 主页 > 服务器问题 > win服务器问题汇总 >

    ReWrite学习笔记小结

    栏目:win服务器问题汇总 时间:2019-11-15 00:47

    比如,下面,我要实现这样的URL: 
    http://xxx.com/0725 
    http://xxx.com/0726 
    http://xxx.com/0727 
    … 

    上面xxx.com是一个记录《今天是》这样的历史内容的一个测试站点。上面链接的意思,就是显示07月25日的历史上发生了什么事情,类似这样。这样看起来就很美观、整齐了。要不然,可能的地址就是: 
    http://xxx.com/index.php?t... 
    http://xxx.com/index.php?t... 
    http://xxx.com/index.php?t... 
    … 

    现在我就是要实现把 index.php?today= 隐藏掉。以下是代码: 

    1..htaccess 文件 
    <IfModule mod_rewrite.c> 
      RewriteEngine On 
      RewriteBase / 
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteCond   %{REQUEST_FILENAME} !-d 
      RewriteRule ^([0-9]+)$   /index.php?today=$1 
      </IfModule> 

    粗体字这里我说明一下,其它的按这个格式吧,具体我现在也不理解。 
    [0-9]的意思是,参数只能是0~9这些数字,如果你要包含任何字符,就改为:

    RewriteRule ^(.+)$ /index.php?today=$1   

    这里[0-9]改为了. ,这个.就代表任意字符。当然复杂的还很复杂,我们暂时不管。 

    2.index.php文件  
    复制代码 代码如下:
    <?php      
    //rewrite 测试      
    $uid =$_REQUEST['today'];      
    ?>      
    <HTML>      
    <HEAD>      
    <TITLE>rewrite 测试</TITLE>      
    </HEAD>      
    <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080">      
    今天是<?php echo $today;?>,看看历史上的今天都发生了什么事情?<br>      
    ……      
    </BODY>      
    </HTML>    

    这里参数就会传递给index.php文件里的$today,在这个程序内,你就可以根据参数,进行处理,如查询数据库啦、做运算啦等,然后再显示相应的数据出来,就可以了。
    实现方法2 
    复制代码 代码如下:
    <?php     
    //url示例:soft.php/1,100,8630.html     
    //利用server变量 取得PATH_INFO信息 该例中为 /1,100,8630.html  也就是执行脚本名后面的部分     
    if(@$path_info =$_SERVER["PATH_INFO"]){     
        if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){     
            $gid     =intval($arr_path[1]); //取得值 1