详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
实例:
 
1,http: //localhost/aaa/ (打开aaa中的index.php)
结果:
$_SERVER [ 'QUERY_STRING' ] =  "" ;
$_SERVER [ 'REQUEST_URI' ]  =  "/aaa/" ;
$_SERVER [ 'SCRIPT_NAME' ]  =  "/aaa/index.php" ;
$_SERVER [ 'PHP_SELF' ]     =  "/aaa/index.php" ;
 
2,http: //localhost/aaa/?p=222 (附带查询)
结果:
$_SERVER [ 'QUERY_STRING' ] =  "p=222" ;
$_SERVER [ 'REQUEST_URI' ]  =  "/aaa/?p=222" ;
$_SERVER [ 'SCRIPT_NAME' ]  =  "/aaa/index.php" ;
$_SERVER [ 'PHP_SELF' ]     =  "/aaa/index.php" ;
 
3,http: //localhost/aaa/index.php?p=222&q=333
结果:
$_SERVER [ 'QUERY_STRING' ] =  "p=222&q=333" ;
$_SERVER [ 'REQUEST_URI' ]  =  "/aaa/index.php?p=222&q=333" ;
$_SERVER [ 'SCRIPT_NAME' ]  =  "/aaa/index.php" ;
$_SERVER [ 'PHP_SELF' ]     =  "/aaa/index.php" ;
 
由实例可知:
$_SERVER [ "QUERY_STRING" ]  获取查询 语句,实例中可知,获取的是?后面的值
$_SERVER [ "REQUEST_URI" ]   获取 http: //localhost 后面的值,包括/
$_SERVER [ "SCRIPT_NAME" ]   获取当前脚本的路径,如:index.php
$_SERVER [ "PHP_SELF" ]      当前正在执行脚本的文件名
  
  
  
$_SERVER [ 'REQUEST_URI' ]和 $_SERVER [ "HTTP_X_REWRITE_URL" ]的区别
http: //www.hujuntao.com/web/php/difference-between-server-request-uri-and-server-http_x_rewrite_url.html
  
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
例如:http: //www.hujuntao.com/index.php?p=3
$_SERVER [ 'REQUEST_URI' ]获得的就是/index.php?p=3这部分
$_SERVER [ "HTTP_X_REWRITE_URL" ]则在IIS下获得的是当前URL,在apache下的值为空
例如:
当前URL:http: //www.hujuntao.com/
IIS环境下:
$_SERVER [ 'REQUEST_URI' ] = /index.php
$_SERVER [ "HTTP_X_REWRITE_URL" ] =/
apache环境下:
$_SERVER [ 'REQUEST_URI' ] = /
$_SERVER [ "HTTP_X_REWRITE_URL" ] =”
当前URL:http: //www.hujuntao.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" ] =”



本文转自 IT阿飞 51CTO博客,原文链接:http://blog.51cto.com/itafei/1867675


相关文章
|
2月前
|
存储 缓存 测试技术
CMake String函数:如何巧妙地在cmake中操作字符串
CMake String函数:如何巧妙地在cmake中操作字符串
146 0
|
2月前
|
编译器 容器
C++string类的介绍及常用函数用法总结
C++string类的介绍及常用函数用法总结
31 1
|
2天前
|
安全 Java 编译器
Java中String、StringBuilder和StringBuffer的区别
Java中String、StringBuilder和StringBuffer的区别
|
11天前
|
安全
String、StringBuuffer、StringBuilder三者的区别
String、StringBuuffer、StringBuilder三者的区别
|
16天前
StringBuilder和StringBuffer区别是什么?
StringBuilder和StringBuffer区别是什么?
|
17天前
|
存储 安全 Java
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
39 8
|
1月前
TextUtils.isEmpty()和String.isEmpty()的区别
TextUtils.isEmpty()和String.isEmpty()的区别
12 1
|
2月前
|
存储 缓存 安全
JAVA面试:String、StringBuffer和StringBuilder区别
`String`是不可变的,`StringBuffer`和`StringBuilder`是可变的。`String`的不可变性源于其内部的`final char[]`数组,这意味着每次修改都会创建新对象。`StringBuffer`线程安全,方法同步,适合多线程环境,但效率较低;`StringBuilder`非线程安全,无同步,单线程中效率更高。两者初始容量相同,扩容机制也一样。
29 0
|
2月前
|
存储 算法 安全
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
|
2月前
|
存储 安全 Java
String、StringBuilder、StringBuffer的区别
String、StringBuilder、StringBuffer的区别
14 0