重写URL的方法很多,比如apache 中有一个rewrite 的模块,通过写规则的方法可以实现URL的翻译。。。。
我这里的重写URL 实际上是从URL 的不同形式中取回PHP所需要的参数!
比如正常情况下 http://www.sunthing.com/index.php?name=sunthing&sex=male?
我们的参数名是name 和 sex ,数据是sunthing 和 male
在apache 中 我们的URL 可以以这种形式出现 http://www.sunthing.com/index.php/name/sunthing/sex/male
那么以这种形式出现的话,我们就要分析URL,将各参数取回,同时在生成(输入)链接的时候也以这种形式生成(输入)
具体如何做呢?
PHP 中有几个有用的服务器变量 一个是$_SERVER['SCRIPT_NAME'] 它是文件名包括路径(相对网站) 另一个是$_SERVER['REQUEST_URI'] 这是整个URL 当然还有其他服务器变量,这里所用到的就是这两个,其他就不多说了!
接下来就是要分离文件名和参数,这部分处理是在文件名的那个文件中处理
$parameters_string=str_replace($_SERVER['SCRIPT_NAME'],"",$_SERVER['REQUEST_URI']);
将各个参数据分离
$parameters_array=split('/',$parameters_string);
这个时候数组$parameters_array 的成员分别为第一个为空, 第二个为name ,第三个为sunthing第四个为sex 第五个为male
这些参数分离出来后就可以为我所用了!
如何用 ? 当然提参看你自己的应用了啊!.
比如这里是查询的话select *from users where name=$parameters_array[3] and $parameters_array[4]=$parameters_array[5]
那么这个时候大家是否理解了呢? 本来是http://www.sunthing.com/index.php?name=sunthing&sex=male? 样子的URL ,现在改写成了 http://www.sunthing.com/index.php/name/sunthing/sex/male 这种样子 的URL 而程序依然可以执行,而又和静态网页的URL类似,正受搜索引擎喜欢。
我在这里只是一个抛一下石头,希望对大家有所帮助!
本文地址:http://com.8s8s.com/it/it27517.htm