PHP 与 URI 相关的服务器变量,以 “http://localhost:8000/xxx/yyy/index.php/zzz/?a=1&b=2?c=3” 为例子。一张图进行说明:
返回URL请求的协议名称以及协议的版本好,格式如:协议名称/协议版本号。
上面示例URL中,返回 HTTP/1.1
返回URL请求的服务器端口号。
上面示例URL中,返回 8000
返回URL请求的主机名以及端口号,格式如:主机名:端口号
上面示例URL中,返回 localhost:8000
返回URL请求的主机名(不含端口号)
上面示例URL中,返回 localhost
返回URL的文件路径
说明:
- 返回结果是一个相对于web根目录的绝对路径,第一个字符为“/”;
- 如果URL不包含文件名(例如访问默认页面),该环境变量会自动补充文件名;
- 即使URL文件名后面还存在类似“/***/***”的内容,也不会影响其结果;
上面示例URL中,返回 /xxx/yyy/index.php;
如果URL为 http://localhost:8000/xxx/ (默认页面为index.php),则返回 /xxx/index.php;
返回URL中第一个“?”后面至第二个“?”前面的内容,或者第一个“?”后面至其后面第一个“#”前面的内容。
说明:
- 该服务器变量不含有“?”字符;
- 如果URL中不含有“?”,该环境变量为空;
- 如果URL中只有一个“?”也不含有“#”字符,那么就是返回到URL结束处;
上面示例URL中,返回a=1&b=2
返回从URL的域名(或端口号)后面至结束的内容
说明:
- 这是一个相对于web根目录的绝对路径+URL查询字符,第一个字符为“/”;
- 该环境变量保留URL的原状,例如URL中不含文件名(访问默认页面),也不会自动添加文件名
上面示例URL中,返回 /xxx/yyy/index.php/zzz/?a=1&b=2?c=3
返回从URL的域名(或端口号)后面至第一个“?”之前的内容
说明
- 如果URL不包含文件名(例如访问一个默认页面),该环境变量会自动补充文件名;
- 与“$_SERVER[‘SCRIPT_NAME’]”变量的区别,如果文件名(“****.***”)后面至“?”之间没有内容,那么“$_SERVER[‘PHP_SELF’]”和“$_SERVER[‘SCRIPT_NAME’]”返回的结果是一样。但如果文件名后面至“?”之间还有内容,那么就不同了。在这种情况下“$_SERVER[‘SCRIPT_NAME’]”返回结果不包含文件名后面的内容,而“$_SERVER[‘PHP_SELF’]”会连同文件名与“?”之间的内容一并返回。
上面示例URL中,返回 /xxx/yyy/index.php/zzz
如果URL为 http://localhost:8000/xxx/?a=1,返回 /xxx/index.php(这种情况下等价于$_SERVER["SCRIPT_NAME"])