用Apache的Rewrite重写url总是失败,测试了好久,终于找到原因。
首先在网站根目录建了一个test.php文件,代码如下:
1 <?php
2 echo substr($_SERVER["QUERY_STRING"], 1);
3 ?>
2 echo substr($_SERVER["QUERY_STRING"], 1);
3 ?>
正常情况下,在地址栏输入http://localhost/test.php?=100就会显示下面的画面
在网站根目录建了一个.htaccess文件,写了如下代码
RewriteEngine On #开启重写引擎
RewriteRule ^/([0-9]*)\.html$ /test.php?=$1 #意思是在网站根目录下的任何数字("([0-9]*)")如1.html、22.html的地址都会重写到后面的"test.php?=$1"这里的$1是前面"([0-9]*)"这个括号匹配到的任何字符串,如22.html那么$1的值就是22。
保存.htaccess后,奇怪的是,当在地址栏上输入http://localhost/22.html的时候,显示404没有找到该网面
万思不得其解,在百度没到找到答案,只好修改.htaccess。弄了一阵子,原来是^/([0-9]*)\.html$里的"/"出的问题,把"/"删除后,保存,再输入localhost/22.html。期待的画面终于出来了。