IIS的ISAPI_Rewrite虽然号称兼容Apache Rewrite,实际上还是不兼容的

By lincanbin at 2014-11-25 • 0人收藏 • 432人看过

主要体现在:

带中文参数时,正则无法生效截取到带中文的参数,必须将

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

登录后方可回帖

登 录
信息栏
购买PHP虚拟主机 / VPS

Carbon Forum是一个基于话题的高性能轻型PHP论坛

下载地址:Carbon Forum v5.0.1
QQ群:12607708(QQ我不常上)

donate

手机支付宝扫描上方二维码可向本项目捐款

Loading...