核心部分是.htaccess文件,默认可能不支持.htaccess,请查看《apache 不支持.htaccess文件如何处理》。
首先我们看下一个地址:
http://www.quou.cn/cnweb/0/445/article/
这个地址的cnweb其实是虚拟的:
为什么没有cnweb这个目录而虚拟主机又认它呢,这就是因为我设置了.htaccess文件了:
.htaccess文件里加一段配置代码,如下:
ForceType application/x-httpd-php
这样就完成了第一步了,appach服务器看到地址栏里有cnweb这个目录地址后就把它当为了php的处理方式了;
OK,接着我们在根目录下建立cnweb文件,去掉它的扩展名,也就是没有扩展名,呵呵。这个文件里的代码是用php来写的(因为刚才已经将它注册到了appache服务器了)
可能大家已经想到了,在cnweb里我们就要配置下一步如何来转向了。
为了安全性,我这里不贴出我的cnweb文件的代码了,不过可以举个小例子:
$fields = explode(“/”, $_SERVER[“REQUEST_URI”]);
$id_pos = array_search(“cnweb”, $fields);
if( $id_pos !== false )
{
$c_id = $fields[ $id_pos + 1 ];
$a_id = $fields[ $id_pos + 2 ];
}
以上通过分析url取得类别ID和文章ID
if( $a_id )
{
$_GET[“aid”] = $a_id;
$_GET[“cid”] = $c_id;
require_once(“showarticle.php”);
}
?>
通过以上文章,大家可以看到,其实我显示文章的页面是”showarticle.php?aid=45&cid=0″,当我们打开http://www.quou.cn/cnweb/0/445/article/这个地址时,自动隐式转向是”showarticle.php?aid=45&cid=0″这个地址。
再附加一例:
//若URL为http://127.0.0.1/test.php?id=38 或者http://127.0.0.1/test/38
$path=$_SERVER[“REQUEST_URI”];
$fields = explode(“/”, $path);
//在数组中搜索给定的值,如果成功则返回相应的键名
$id_post=array_search(“test”,$fields);
if($id_post!==false)
{
$id=$fields[$id_post+1];
}
echo $id;
//输出38;实现程序的伪静态
?>