一尘不染

PHP_SELF,PATH_INFO,SCRIPT_NAME,REQUEST_URI

php

我正在CodeIgniter中构建一个PHP应用程序。CodeIgniter将所有请求发送到主控制器:index.php。但是,我不喜欢index.php在URI中看到。例如,http://www.example.com/faq/whatever将路由到http://www.example.com/index.php/faq/whatever。我需要一种可靠的方法来让脚本知道其地址,因此它将知道如何处理导航。mod_rewrite根据CodeIgniter文档,我已经使用过。

规则如下:

RewriteEngine on
RewriteCond $1 !^(images|inc|favicon\.ico|index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

通常,我只是检查一下php_self,但在这种情况下,它始终为index.php。我可以从REQUEST_URIPATH_INFO等获得它,但是我正在尝试确定哪一个最可靠。没有人知道(或不知道在哪里可以找到)之间的真正区别PHP_SELFPATH_INFOSCRIPT_NAME,和REQUEST_URI?谢谢你的帮助!

注意 :我不得不添加空格,因为SO看到了下划线,并且由于某种原因使其变为斜体。

更新 :修复了空格。


阅读 290

收藏
2020-05-26

共1个答案

一尘不染

PHP文件可以告诉你的区别:

‘PHP_SELF’

当前正在执行的脚本的文件名,相对于文档根目录。例如,位于地址
http://example.com/test.php/foo.bar
的脚本中的 $ _SERVER [‘PHP_SELF’]/test.php/foo.bar
。该FILE常量包含当前的完整路径和文件名(例如包含文件)。如果PHP作为命令行处理器运行,则此变量包含自PHP
4.3.0起的脚本名称。以前不可用。
__

“ SCRIPT_NAME”

包含当前脚本的路径。这对于需要指向自己的页面很有用。该FILE常量包含当前的完整路径和文件名(例如包含文件)。

“ REQUEST_URI”

为了访问该页面而给出的URI;例如 ‘/index.html’

似乎没有记录PATH_INFO …

2020-05-26