详解 $_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


相关文章
|
5月前
|
安全
String、StringBuffer、StringBuilder的区别
String 由 char[] 数组构成,使用了 final 修饰,对 String 进行改变时每次都会新生成一个 String 对象,然后把指针指向新的引用对象。 StringBuffer可变并且线程安全;有一定缓冲区容量,字符串大小没超过容量,不会重新分配新的容量,适合多线程操作字符串; StringBuiler可变并且线程不安全。速度比StringBuffer更快,适合单线程操作字符串。 操作少量字符数据用 String;单线程操作大量数据用 StringBuilder;多线程操作大量数据用 StringBuffer
|
7月前
|
安全 Java
String、StringBuffer、StringBuilder的区别
这篇文章讨论了Java中String、StringBuffer和StringBuilder的区别。String是不可变的,每次操作都会产生新的对象,效率低且浪费内存。StringBuilder可以在原字符串基础上进行操作,不开辟额外内存,弥补了String的缺陷。StringBuffer和StringBuilder类似,但StringBuffer的方法是线程安全的。文章还列举了StringBuffer的常用方法,并提供了使用示例代码。最后总结了这三者的主要区别。
String、StringBuffer、StringBuilder的区别
|
6月前
|
存储 安全 Java
String、StringBuffer 和 StringBuilder 的区别
【10月更文挑战第21天】String、StringBuffer 和 StringBuilder 都有各自的特点和适用场景。了解它们之间的区别,可以帮助我们在编程中更合理地选择和使用这些类,从而提高程序的性能和质量。还可以结合具体的代码示例和实际应用场景,进一步深入分析它们的性能差异和使用技巧,使对它们的理解更加全面和深入。
178 0
|
8月前
|
Java
【Java基础面试二十六】、说一说String和StringBuffer有什么区别
这篇文章区分了Java中的String和StringBuffer类:String是不可变类,一旦创建字符序列就不能改变;而StringBuffer代表可变的字符串,可以通过其方法修改字符序列,最终可以通过`toString()`方法转换为String对象。
【Java基础面试二十六】、说一说String和StringBuffer有什么区别
|
8月前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
|
8月前
|
安全 Java
【Java基础面试二十七】、说一说StringBuffer和StringBuilder有什么区别
这篇文章介绍了Java中StringBuffer和StringBuilder的区别:StringBuffer是线程安全的,而StringBuilder是非线程安全的,因此在单线程环境下优先推荐使用StringBuilder以获得更好的性能。
|
8月前
|
安全 Java API
Java系类 之 String、StringBuffer和StringBuilder类的区别
这篇文章讨论了Java中`String`、`StringBuffer`和`StringBuilder`三个类的区别,其中`String`是不可变的,而`StringBuffer`是线程安全的可变字符串类,`StringBuilder`是非线程安全的可变字符串类,通常在单线程环境下性能更优。
Java系类 之 String、StringBuffer和StringBuilder类的区别
|
8月前
|
安全
String,Stringbuffer,StringBuilder的区别
【8月更文挑战第16天】String,Stringbuffer,StringBuilder的区别
61 2
|
8月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
111 0
|
8月前
|
安全 编译器 C++
【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数
【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数

热门文章

最新文章

下一篇
oss创建bucket