三叶草 发表于 2021-11-4 20:32:16

ReWrite学习笔记小结

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


上面xxx.com是一个记录《今天是》这样的历史内容的一个测试站点。上面链接的意思,就是显示07月25日的历史上发生了什么事情,类似这样。这样看起来就很美观、整齐了。要不然,可能的地址就是:
https://xxx.com/index.php?t...
https://xxx.com/index.php?t...
https://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 ^(+)$   /index.php?today=$1
</IfModule>

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

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

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

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      
      $sid   =intval($arr_path);//取得值100      
      $softid=intval($arr_path);//取得值8630      
      //相当于soft.php?gid=1&sid=100&softid=8630      
    }else die("Path:Error!");      
}else die("Path:Nothing!");      

echo($gid);      
echo("<br>");      
echo($sid);      
echo("<br>");      
echo($softid);      
?>   

https://www.uoften.com/serverhost/winhost/20180415/80217.html
页: [1]
查看完整版本: ReWrite学习笔记小结