我有一个奇怪的问题,我找不到文档。我在服务器的以下位置有一个页面。
{SITE_ROOT}/admin/myfolder/myfile.php
该文件使用包含来运行驻留在服务器根目录上的全局配置文件 - 它相对于自身执行此操作
// {SITE_ROOT}/admin/myfolder/myfile.php
// includes {SITE_ROOT}/config.php See below explanation after edit
include('../config.php);
这工作正常,直到我将以下 .htaccess 文件添加到 myfolder 目录中
// {SITE_ROOT}/admin/myfolder/.htaccess
RewriteEngine On
RewriteRule ^([0-9A-Z]+)\.gif$ gif_generator.php?gifid=$1 [L]
这条规则的目的并不重要——事实是上面的页面(myfile.php)不应该受这条规则的影响(它不应该匹配正则表达式,除非我弄错了——我很可能是) . 然而,似乎在使用此规则时, myfile.php 中的 include() 失败。就好像由于启用了 RewriteEngine 而更改了 php 文件的当前工作目录。
这是否记录在任何地方,有没有办法防止这种情况发生?
编辑- 我错过了一些相当重要的事情。原始文件 ({SITE_ROOT}/admin/myfolder/myfile.php) 本身包含在以下位置 ({SITE_ROOT}/admin/frontcontroller.php) 的文件中。myfile.php 中的包含路径实际上是相对于这个文件的。我已经更改了上述问题以反映这一点。