$_SERVER["HTTP_X_REWRITE_URL"]表示什么

发布时间:2019-07-22 00:01:41 来源:互联网 作者:青锋网站建设
  WordPress在load.php中使用了function wp_fix_server_vars()来处理IIS和APACHE的兼容性,这里只要判断 HTTP_X_ORIGINAL_URL, HTTP_X_REWRITE_URL, REQUEST_URI, REDIRECT_URL就可以识别URL和重写URL的判断。

各个WEB软件判断请求URL

IIS7 + Rewrite Module -> $_SERVER['HTTP_X_ORIGINAL_URL']
IIS6 + ISAPI Rewite -> $_SERVER['HTTP_X_REWRITE_URL’]
Apache2 -> $_SERVER['REQUEST_URI’] 或 $_SERVER['REDIRECT_URL']
nginx -> $_SERVER['REQUEST_URI’]
  因此得出的结果是,只要判断 HTTP_X_ORIGINAL_URL, HTTP_X_REWRITE_URL, REQUEST_URI, REDIRECT_URL 这些参数,我们就可以在PHP中来判断请求url来自于重写地址的还是默认格式的地址了。

$_SERVER['HTTP_X_REWRITE_URL'] 和$_SERVER['REQUEST_URI']的区别

  IIS+PHP不支持$_SERVER['REQUEST_URI'],并且php4.4.0不支持 $_SERVER['REQUEST_URI'],php5.2.5则增加了支持;$_SERVER['REQUEST_URI']常用来获当前URL。
例如:http://www.sjzphp.com/index.php?p=3
$_SERVER['REQUEST_URI']获得的就是/index.php?p=3这部分。
$_SERVER["HTTP_X_REWRITE_URL"]则在IIS下获得的是当前URL,在apache下的值为空

举例说明在IIS和APACHE环境下获取URL

当前URL:http://www.sjzphp.com/
IIS环境下:
$_SERVER['REQUEST_URI'] = /index.php
$_SERVER["HTTP_X_REWRITE_URL"] =/
apache环境下:
$_SERVER['REQUEST_URI'] = /
$_SERVER["HTTP_X_REWRITE_URL"] =”
IIS环境下:
$_SERVER['REQUEST_URI'] = /index.php
$_SERVER["HTTP_X_REWRITE_URL"] =/index.php
apache环境下:
$_SERVER['REQUEST_URI'] = /index.php
$_SERVER["HTTP_X_REWRITE_URL"] =”
  而我需要的就是判断当前URL是否包含/index.php,由此可见,IIS环境下首先域名重定向用$_SERVER["HTTP_X_REWRITE_URL"]代替$_SERVER['REQUEST_URI'],apache环境则相反。青锋建站,提供专业的高品质网站制作服务,包括网站建设,SEO,网络营销,PHP开发,网站建设知名品牌,全国接单,为企业构建强有力的营销平台。
分享到:

Copyright © 2016-2026 青锋建站 版权所有