<cfinclude>和相对位置</cfinclude>

时间:2015-02-26 11:40:07

标签: railo lucee

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

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

失败了,但是

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

作品。

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

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

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

如果没有,那么事情就会被打破,我将不得不尝试别的东西。对不起,我无法发布任何代码来演示。

TA

克里斯

1 个答案:

答案 0 :(得分:2)

我唯一能想到的是,不知何故,你将地址栏中的URL与文件系统路径的概念混为一谈。

<cfinclude>相对路径是相对于它包含的文件而言的。

使用您自己的示例:

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

这将适用于这种文件层次结构:

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

(其中subdir可以是任何内容,也可以在目录结构中以任何深度抽象,前提是file.cfm始终与subdir在同一目录中<)

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

在这种情况下,文件结构必须如下所示:

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

(同样的规则适用于上述,只是由另外一个子目录抽象)。

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