IIS的ISAPI_Rewrite虽然号称兼容Apache Rewrite,实际上还是不兼容的
IIS的ISAPI_Rewrite虽然号称兼容Apache Rewrite,实际上还是不兼容的
By lincanbin
at 2014-11-25
1人收藏 • 1802人看过
主要体现在:
带中文参数时,正则无法生效截取到带中文的参数,必须将
[L]
改为
[QSA,NU,PT,L]
第二点
$_SERVER["REQUEST_URI"]
获取无法获取到Rewrite后的URL,因此通过这个来判断或者禁用直接访问带.php的URL在IIS的ISAPI_Rewrite下是无法生效的,毕竟IIS本来就不适合跑PHP。
要做兼容,需要做个判断,用这样才能在Apache和IIS下获取Rewrite后的URL:
isset($_SERVER['HTTP_X_REWRITE_URL'])?$_SERVER['HTTP_X_REWRITE_URL']:$_SERVER["REQUEST_URI"]
$_SERVER['HTTP_X_REWRITE_URL']
这个变量是ISAPI官方文档提供的SERVER这个Hashtable其中一项个附加上去的值,等同于Apache下的
$_SERVER["REQUEST_URI"]
第二点这个主要体现在旧版本的ISAPI_Rewrite中,新版本有没有,我就不知道了。
- 登录后方可回帖