如何在.htaccess文件中指定auto_prepend_file而不硬编码绝对路径


How can I specify an auto_prepend_file in my .htaccess file without hardcoding the absolute path?

我有一个PHP文件,要在每个请求的开头执行。我在我的htaccess文件中指定了它:

php_value auto_prepend_file "alwaysrunthis.php"

问题是,该指令的值是在目标脚本的上下文中执行的,而不是在.htaccess文件位置的上下文中。因此,如果我正在执行的脚本与prepend文件在同一目录中,但在其他情况下则不在,那么它就可以工作。

我意识到我可以使用绝对路径,但这不是很便携。我可以在.htaccess中访问任何变量来在执行时生成绝对路径吗?

简短回答,无

答案很长,你可能会让它像你想的那样工作。

您可以创建自动预处理文件以使用$_SERVER['DOCUMENT_ROOT'] var来确定使用开关/if-else构造包含哪个文件。

或者,您可以将__FILE__ var与realpath结合使用,以包含/要求所需的"prepend"文件。

auto-prepend.php
require_once(realpath(__FILE__) . '/prepend.php');

//编辑:
仔细想想,__FILE__可能会引用prepend文件而不是请求的文件,因此它可能无法按预期工作。