首页  >  文章  >  后端开发  >  PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 在确定脚本地址方面有何不同?

PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 在确定脚本地址方面有何不同?

Linda Hamilton
Linda Hamilton原创
2024-11-02 06:48:02971浏览

How do PHP_SELF, PATH_INFO, SCRIPT_NAME, and REQUEST_URI Differ in Determining a Script's Address?

确定 PHP 中脚本的地址:PHP_SELF、PATH_INFO、SCRIPT_NAME、REQUEST_URI

开发 PHP 应用程序时,了解 PHP_SELF、PATH_INFO 之间的区别、SCRIPT_NAME 和 REQUEST_URI 对于可靠地确定脚本的地址至关重要。

PHP_SELF 表示脚本的完整 URL,包括查询字符串。在大多数情况下,它是检索脚本完整地址的最可靠选项。但是,如果请求经过 mod_rewrite 指令,PHP_SELF 可能无法反映实际请求的 URL。

PATH_INFO 存储脚本名称后面的 URL 部分。使用 mod_rewrite 时此信息可用,但在某些情况下可能为空。

SCRIPT_NAME 包含正在执行的脚本的实际文件名,不包括任何路径信息。与 PHP_SELF 不同,SCRIPT_NAME 不受 mod_rewrite 影响。

REQUEST_URI 捕获完整的请求 URI,包括路径、查询字符串和任何锚片段。在使用代理服务器或处理重定向时非常有用。

为了说明差异,这里有一些示例:

  • 示例 1: 使用 mod_rewrite 将 http://example.com/test.php/foo/bar 重定向到 http://example.com/index.php/test.php/foo/bar 时:

    • PHP_SELF: /test.php/foo/bar
    • SCRIPT_NAME: /test.php
    • PATH_INFO: /foo/bar
  • 示例 2: 在 http://example.com/test.php?foo=bar 中使用非空查询字符串时:

    • PHP_SELF: /test.php? foo=bar
    • SCRIPT_NAME: /test.php
    • REQUEST_URI: /test.php?foo=bar
  • 示例3:使用mod_rewrite将http://example.com/test.php重定向到http://example.com/test2.php时:

    • PHP_SELF: /test.php
    • SCRIPT_NAME: /test2.php
    • REQUEST_URI: /test.php

通过了解这些差异,您可以选择最合适的变量满足您的特定需求,确保可靠地访问脚本地址,无论 Web 服务器配置或 URL 操作如何。

以上是PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 在确定脚本地址方面有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn