2

我有一个应用程序,当请求到达特定文件时,它的相对位置会超出一个文件夹。如果我尝试从上面的文件夹中包含一个文件

   <cfinclude template="../file.cfm">

失败,但是

   <cfinclude template="../../file.cfm">

作品。

如果我直接请求文件,“../file.cfm”会按预期工作。如果我使用替代文件重新创建堆栈,它也可以按预期工作。

所以在我看来,代码中有一些东西导致文件的相对位置不同。

那可能吗?这是相对的,我没有使用任何映射。

如果不是,那么有些东西坏了,我将不得不尝试其他东西。抱歉,我无法发布任何代码来演示。

克里斯

4

1 回答 1

2

我唯一能想到的是,您以某种方式将地址栏中的 URL 与文件系统路径的概念混为一谈。

相对路径是相对于<cfinclude>包含它的文件的,仅此而已。

使用您自己的示例:

<!--- thisFile.cfm --->
<cfinclude template="../file.cfm">

这将在这种文件层次结构中起作用:

/base/
    /subdir/
        thisFile.cfm
    file.cfm

(wheresubdir可以是任何东西,也可以通过目录结构中的任何深度进行抽象,前提file.cfm是始终与 相同的目录subdir

<!--- thisFile.cfm --->
<cfinclude template="../../file.cfm">

在这种情况下,文件结构需要如下所示:

/base/
    /subdir/
        /anotherSubDir/
            thisFile.cfm
    file.cfm

(与上面相同的规则适用,只是由另一个子目录抽象出来)。

但是相对路径总是相对于所在的源代码文件<cfinclude>。没有别的。

于 2015-03-01T06:18:23.877 回答