php判断是否支持rewrite,从PHP $_SERVER相关参数判断是否支持Rewrite模块
如果是//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模块相关推荐
- php判断客户端是微信,PHP判断是手机端还是PC端以及PHP判断是否是微信浏览器
这篇文章主要为大家详细介绍了PHP判断是手机端还是PC端,以及PHP判断是否是微信浏览器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了PHP判断的两个实例,一是PHP判断是手 ...
- 中if判断中文_当Excel表格中的条件判断超过8个,用IF函数不容易实现怎么办?...
点击上方蓝字 免费关注 置顶公众号或设为星标,否则可能收不到文章 个人微信号 | (ID:LiRuiExcel520) 微信服务号 | 跟李锐学Excel(ID:LiRuiExcel) 微信公众号 ...
- python判断linux中文件是否存在_linux shell 中判断文件、目录是否存在的方法
本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...
- iOS应用支持IPV6及阿里云相关配置
http://www.jianshu.com/p/a6bab07c4062 果然是苹果打个哈欠,iOS行业内就得起一次风暴呀.自从5月初Apple明文规定所有开发者在6月1号以后提交新版本需要支持IP ...
- java接口支持ajax,【JavaWeb】jQuery对Ajax的支持
jQuery对Ajax的支持 jQuery对Ajax进行封装,提供了$.ajax()方法 语法:$.ajax(options) 常用设置项 说明 url 发送请求地址 type 请求类型get|pos ...
- 【怒怼老乔】苹果手机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,'\/'); 来替换掉了, ...
- linux系统最大支持多大硬盘容量,LINUX操作系统对硬件支持有上限么?最大多少内存?多大硬盘容量?...
32位的Linux的内存最大支持到4GB,64位的Linux的最大支持内存在TB级别上. (实际上最大支持多大的内容跟操作系统的种类无关,而是跟操作系统是几位的.还有CPU是几位的有关.) DOS是1 ...
- 数据库 版本号是 661,打不开。此server支持 655 和更早的版本号。不支持降级路径...
"数据库 的版本号为 661,无法打开.此server支持 655 版及更低版本号. 不支持降级路径" 出现这种问题,通常是由于数据库版本号不同造成的. 我们能够用以下的语句查询数 ...
- 判断是否是电脑访问网站 1号店页面判断脚本
判断是否是电脑访问网站 1号店页面判断脚本: <script type="text/javascript"> (function(){ var ua = window. ...
最新文章
- yolov3 pytorch错误集合
- NOIP2018复赛 游记
- linux中正则表达式、find、xargs、grep以及sed等命令的用法
- wamp2 php配置,Wamp2+SVN+Eclipse配置_PHP教程
- 程序员的基本功:为什么非要用 Python 做数据分析?Excel 不好吗?
- 树莓派boot分区cmdline.txt
- 基于阿里云的MQTT远程控制
- 阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
- 找直系亲属——并查集
- python背景色渐变_Python 生成纯色或渐变色图片
- 台式计算机如何连接手机热点上网,台式机如何使用手机热点上网
- 学会3招缓解家务病 身体才能更健康
- LINUX ROUTE命令详解-2
- 【19调剂】北京语言大学 智能语音习得技术实验室 -调剂信息
- 数据库并发入门学习笔记,怎么写入redis的数据,配置缓存。
- VMware-vMotion简介和要求
- 读书笔记之《重构》第三章—代码的坏味道
- 网易视频云: 网易平台级视频服务存储技术
- 去掉cajview阅读器右上角的图标方法
- 标准网页两侧浮动广告代码 支持FF及IE
热门文章
- 计算机跨考学校排名,全国33所计算机名校跨考难度系数排名
- Xtreme.Suite.Pro 不错的换肤软件
- 珠海化学分析实验室建设思路
- 两个数组对应数相减java_Java 将两个数组相减(按组件)
- c++使用ado访问数据库
- TiDB删除大数据的处理
- mysql information schema_MySQL的information_schema的介绍
- C语言IP地址比较(IPv4/IPv6)
- 裸辞不是说走就走的旅行
- 视频中人体行为识别与理解综述_杨兴江_笔记