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


相关文章
|
3月前
|
存储 安全 Java
【JAVA基础】String、StringBuilder和StringBuffer的区别——巨详细
String是不可变的,StringBuilder和StringBuffer是可变的。而StringBuffer是线程安全的,而StringBuilder是非线程安全的。
|
4月前
|
安全 Java 调度
Java基础面试,String,StringBuffer,StringBuilder区别以及使用场景
* String是final修饰的,不可变,每次操作都会产生新的对象。 * StringBuffer和StringBuilder都是在原对象上进行操作 * StringBuffer是线程安全的,StringBuilder是线程不安全的。 * StringBuffer方法是被synchronized修饰的
|
7月前
|
存储 缓存 安全
String、StringBuffer和StringBuilder的区别(面试题)
String、StringBuffer和StringBuilder的区别(面试题)
68 0
|
3月前
|
Python
python中split_string和substring区别
python中split_string和substring区别
52 1
|
1月前
|
存储 算法 安全
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
|
1月前
|
存储 安全 Java
String、StringBuilder、StringBuffer的区别
String、StringBuilder、StringBuffer的区别
13 0
|
1月前
|
安全 Java
针对String、StringBuffer、Stringbuilder区别及使用场景
针对String、StringBuffer、Stringbuilder区别及使用场景
|
1月前
|
安全 Java API
String和StringBuffer的区别
String和StringBuffer的区别
|
6月前
|
安全 Java
【面试题精讲】String、StringBuffer、StringBuilder 的区别?
【面试题精讲】String、StringBuffer、StringBuilder 的区别?
|
3月前
|
安全
String和StringBuffer、StringBuilder的区别
String和StringBuffer、StringBuilder的区别