重写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类似,正受搜索引擎喜欢。
我在这里只是一个抛一下石头,希望对大家有所帮助!