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中,新版本有没有,我就不知道了。


登 录


现在注册

QQ  登 录    Weibo  登 录    GitHub  登 录