前不久无意中看到说iis服务器,即使不用rewrite组件,也可以实现rewrite功能,是借助404页面的一个巧妙应用,把所有页面都导向404页面,再由404载入相应的重写目标文件请求,因为使用linux+apache主机,没必要搞这东西,就没有仔细看这个功能的具体实现代码,但还是感觉到很新奇。而且那篇帖子的作者说是看到某个国外技术文章里讲的,借鉴来。
刚才,十分钟前,偶然看wordpress官方网站里的说明文档,发现了在wordpress里早就应用这一技术了:
wordpress管理后台-设置-固定链接
“WordPress 允许您更改默认的链接形式,以此提高 URLs 的可读性和对搜索引擎的友好程度。参考”
这里的“参考”链接里面就有以下一段:
Apache web server with the mod_rewrite module
Microsoft IIS 7+ web server with the URL Rewrite 1.1+ module and PHP 5 running as FastCGI
possibly Microsoft IIS 6+ using a 404 handler or Mod-Rewrite Pro
Lighttpd using a 404 handler or mod_rewrite or mod_magnet (see External sources)
讲得很明白,404 handler 也可以实现,
2 |
$qs = $_SERVER [ 'QUERY_STRING' ]; |
3 |
$pos = strrpos ( $qs , '://' ); |
4 |
$pos = strpos ( $qs , '/' , $pos + 4); |
5 |
$_SERVER [ 'REQUEST_URI' ] = substr ( $qs , $pos ); |
6 |
$_SERVER [ 'PATH_INFO' ] = $_SERVER [ 'REQUEST_URI' ]; |
看来还是老外的技术牛人多,老外的文章很多时候更有借鉴价值
不清楚它是什么时候提出来,好几年前我在csdn就提出过用404错误映射到URL来处理404错误,从而完成ISAPI Rewrite的功能