为什么网址如http://192.168.1.116/wordpress/wp-content/themes/bktf/frameworks/back-end/theme-options/options/fields/font/field_font.js.php?ver=1358535557
...最终服务/wordpress/wp-content/themes/bktf/frameworks/back-end/theme-options.php/options/fields/font/field_font.js.php
(这也是`$ _SERVER ['PHP_SELF']的内容。)
...在同一个theme-options
父目录中同时具有目录名theme-options.php
和文件名back-end
的情况下?
此外,$_SERVER['SCRIPT_NAME']
的内容为/wordpress/wp-content/themes/bktf/frameworks/back-end/theme-options.php
。
为什么Apache或PHP模块会自动在目录名末尾添加.php
,因为有一个与dir相同的脚本???
注意:我使用Apache和PHP的默认配置为Ubuntu 12LTS服务器,通过tasksel安装,然后使用https://launchpad.net/~ondrej/+archive/php5 PPA升级到PHP 5.4,所有配置文件大多与defaults / examples完全相同 - 它是一个基本的LAMP服务器,意味着在虚拟机中运行以用于开发目的。
答案 0 :(得分:1)
PHP_SELF
指的是在服务器上运行的文件,而不是当前的url。阅读PHP $ _SERVER手册以获取更多信息:http://php.net/manual/en/reserved.variables.server.php
请尝试使用$_SERVER['REQUEST_URI']
。这将为您提供最后的查询字符串。
答案 1 :(得分:0)
PHP_SELF
=当前正在执行的脚本的文件名,相对于文档根目录。
SCRIPT_NAME
=当前脚本的路径。
答案 2 :(得分:0)
好吧,我的问题有点令人困惑,所以我能理解为什么每个人都回答了我提出的问题。
无论如何,在我的案例中发生的事情是没有theme-options
dir (重命名并忘记)和Apache将/[...]/theme-options/[...]
之类的请求转换为{{1}因为有一个/[...]/theme-options.php/[...]
脚本。
我仍然不知道为什么使用所有默认配置的Ubuntu LAMP设置这个奇怪的路径杂耍,但我解决了我的直接问题。
答案 3 :(得分:0)
由于启用了MultiViews选项,Apache将请求转换为具有扩展名的特定文件:http://httpd.apache.org/docs/2.2/mod/mod_negotiation.html#multiviews