如果是//www.zzvips.com/p1141.html形式的URL,可通过$_SERVER['REQUEST_URI']和$_SERVER['QUERY_STRING']值的区别来分析,最主要是如果页面是通过重定向会产生$_SERVER['REDIRECT_QUERY_STRING']和$_SERVER['REDIRECT_URL']两上参数,因此判断页面是否重定向就非常简单,只需要判断这两个值存在的情况就既可,但这只是在Apache环境下才有效。

如果是ISAPI Rewrite环境如何判断?

如果是ISAPI Rewrite环境,虽然不会产生如上$_SERVER['REDIRECT_QUERY_STRING']和$_SERVER['REDIRECT_URL']两上参数,但同样会产生自己独特的参数$_SERVER['HTTP_X_REWRITE_URL'],这个参数只有在ISAPI环境下才会产生,因此使用这个参数就能判断当前的URL是何种形式,方法如下:

复制代码 代码如下:

$isApi = (isset($_SERVER['HTTP_X_REWRITE_URL']) && strpos($_SERVER['HTTP_X_REWRITE_URL'],'?')) ? TRUE : FALSE;

通过对当前URL显示形式的判断,就能知道程序将如何执行以及是否需要301重定向,如果当前URL是//www.zzvips.com/?=p1141,则需要使用301重定向到//www.zzvips.com/p1141.html,如下:

复制代码 代码如下:

header("HTTP/1.1 301 Moved Permanently");

header("Location://www.zzvips.com/p1141.html");

然后再走重定向后程序的流程,这样就保证了页面的统一,同时也解决了ISAPI和Apache的Rewrite循环重定向问题。

ISAPI和Apache是否重定向判断:

ISAPI使用:

复制代码 代码如下:

$_SERVER['HTTP_X_REWRITE_URL']

Apache使用:

复制代码 代码如下:

$_SERVER['REDIRECT_QUERY_STRING']或$_SERVER['REDIRECT_URL']

只要掌握$_SERVER各参数的用法,就能轻松解决ISAPI和Apache的Rewrite循环重定向问题。

下面是其它网友的补充可以参考一下

WordPress通过301重定向实现非首先域(非www)跳转向本来是一个很简单事情,由于没弄清楚$_SERVER[‘HTTP_X_REWRITE_URL'] 和$_SERVER[‘REQUEST_URI']的区别导致了循环重定向问题。

现在来具体研究下$_SERVER[‘HTTP_X_REWRITE_URL'] 和$_SERVER[‘REQUEST_URI']的区别

首先要纠正一部分的观点就是IIS+PHP不支持$_SERVER[‘REQUEST_URI']

不是,不支持是PHP Version 版本的问题,php4.4.0不支持 $_SERVER[‘REQUEST_URI'],php5.2.5则增加了支持;

$_SERVER[‘REQUEST_URI']常用来获当前URL

例如://www.zzvips.com/index.php?p=3

$_SERVER[‘REQUEST_URI']获得的就是/index.php?p=3这部分。

$_SERVER[“HTTP_X_REWRITE_URL”]则在IIS下获得的是当前URL,在apache下的值为空

例如:

当前URL://www.zzvips.com/

IIS环境下:

$_SERVER[‘REQUEST_URI'] = /index.php

$_SERVER[“HTTP_X_REWRITE_URL”] =/

apache环境下:

$_SERVER[‘REQUEST_URI'] = /

$_SERVER[“HTTP_X_REWRITE_URL”] =”

当前URL://www.zzvips.com/index.php

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环境则相反。

php判断是否支持rewrite,从PHP $_SERVER相关参数判断是否支持Rewrite模块相关推荐

  1. php判断客户端是微信,PHP判断是手机端还是PC端以及PHP判断是否是微信浏览器

    这篇文章主要为大家详细介绍了PHP判断是手机端还是PC端,以及PHP判断是否是微信浏览器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了PHP判断的两个实例,一是PHP判断是手 ...

  2. 中if判断中文_当Excel表格中的条件判断超过8个,用IF函数不容易实现怎么办?...

    点击上方蓝字  免费关注 置顶公众号或设为星标,否则可能收不到文章 个人微信号 | (ID:LiRuiExcel520) 微信服务号 | 跟李锐学Excel(ID:LiRuiExcel) 微信公众号  ...

  3. python判断linux中文件是否存在_linux shell 中判断文件、目录是否存在的方法

    本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...

  4. iOS应用支持IPV6及阿里云相关配置

    http://www.jianshu.com/p/a6bab07c4062 果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IP ...

  5. java接口支持ajax,【JavaWeb】jQuery对Ajax的支持

    jQuery对Ajax的支持 jQuery对Ajax进行封装,提供了$.ajax()方法 语法:$.ajax(options) 常用设置项 说明 url 发送请求地址 type 请求类型get|pos ...

  6. 【怒怼老乔】苹果手机ios系统居然特喵的不支持日期yyyy-MM-dd HH:mm:ss.ms,只支持 yyyy/MM/dd HH:mm:ss

    苹果手机ios系统居然特喵的 不支持日期yyyy-MM-dd HH:mm:ss.ms, 只支持yyyy/MM/dd HH:mm:ss 我只能用 .replace(/\-/g,'\/'); 来替换掉了, ...

  7. linux系统最大支持多大硬盘容量,LINUX操作系统对硬件支持有上限么?最大多少内存?多大硬盘容量?...

    32位的Linux的内存最大支持到4GB,64位的Linux的最大支持内存在TB级别上. (实际上最大支持多大的内容跟操作系统的种类无关,而是跟操作系统是几位的.还有CPU是几位的有关.) DOS是1 ...

  8. 数据库 版本号是 661,打不开。此server支持 655 和更早的版本号。不支持降级路径...

    "数据库 的版本号为 661,无法打开.此server支持 655 版及更低版本号. 不支持降级路径" 出现这种问题,通常是由于数据库版本号不同造成的. 我们能够用以下的语句查询数 ...

  9. 判断是否是电脑访问网站 1号店页面判断脚本

    判断是否是电脑访问网站 1号店页面判断脚本: <script type="text/javascript"> (function(){ var ua = window. ...

最新文章

  1. yolov3 pytorch错误集合
  2. NOIP2018复赛 游记
  3. linux中正则表达式、find、xargs、grep以及sed等命令的用法
  4. wamp2 php配置,Wamp2+SVN+Eclipse配置_PHP教程
  5. 程序员的基本功:为什么非要用 Python 做数据分析?Excel 不好吗?
  6. 树莓派boot分区cmdline.txt
  7. 基于阿里云的MQTT远程控制
  8. 阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
  9. 找直系亲属——并查集
  10. python背景色渐变_Python 生成纯色或渐变色图片
  11. 台式计算机如何连接手机热点上网,台式机如何使用手机热点上网
  12. 学会3招缓解家务病 身体才能更健康
  13. LINUX ROUTE命令详解-2
  14. 【19调剂】北京语言大学 智能语音习得技术实验室 -调剂信息
  15. 数据库并发入门学习笔记,怎么写入redis的数据,配置缓存。
  16. VMware-vMotion简介和要求
  17. 读书笔记之《重构》第三章—代码的坏味道
  18. 网易视频云: 网易平台级视频服务存储技术
  19. 去掉cajview阅读器右上角的图标方法
  20. 标准网页两侧浮动广告代码 支持FF及IE

热门文章

  1. 计算机跨考学校排名,全国33所计算机名校跨考难度系数排名
  2. Xtreme.Suite.Pro 不错的换肤软件
  3. 珠海化学分析实验室建设思路
  4. 两个数组对应数相减java_Java 将两个数组相减(按组件)
  5. c++使用ado访问数据库
  6. TiDB删除大数据的处理
  7. mysql information schema_MySQL的information_schema的介绍
  8. C语言IP地址比较(IPv4/IPv6)
  9. 裸辞不是说走就走的旅行
  10. 视频中人体行为识别与理解综述_杨兴江_笔记