【问题标题】:SSI variable used in an Include?包含中使用的 SSI 变量?
【发布时间】:2021-10-27 14:16:15
【问题描述】:

上下文:

我正在使用服务器端包含将多个 .shtml 页面整理在一起以形成一个页面。这些文件包括页眉、页脚等。我使用的一般 #include 语句 - 我明确命名包含的文件 - 工作正常,例如 <!--#include virtual="/framework/parts/head.shtml" -->

我在 .htaccess 文件中使用以下行:

RewriteRule ^(.*)$ /framework/parts/shell.shtml?url=$1 [QSA,L] 

这使得当我加载一个页面时会加载 shell.shtml 文件。这按预期工作。

我的目标是创建一个 shell.shtml 文件,该文件被调用并用作站点上每个 .html 文件/页面的框架,然后使用 SSI #includes 填充加载页面的内容。

现有代码:

如果我将 shell.shtml 剥离为以下内容,它会演示我遇到的问题。此代码位于文件的<body> 中:

  URI: <!--#echo var="DOCUMENT_URI" --><br>
  Doc: <!--#echo var="DOCUMENT_NAME" --><br><br>
  
  Echo the value of the variable <b>DOCUMENT_URI</b>, which is this page's URL: <i><!--#echo var="DOCUMENT_URI" --></i>. <br><br>
  
  <!--#include virtual="DOCUMENT_URI" --> 

     

当前结果:

这将创建一个包含以下内容的页面:

URI:/private/index.html

文档:shell.shtml

回显变量 DOCUMENT_URI 的值,即此页面的 URL:/private/index.html

[处理此指令时发生错误]

问题:

我需要怎么做才能将系统变量 DOCUMENT_URI 的值传递给#Include,以便包含文件 /private/index.html 的内容?

此外,我发现即使我手动写出最终的#include,也不依赖任何变量,它仍然会抛出相同的错误,所以我相信这在某种程度上与 htaccess 重写有关。

【问题讨论】:

    标签: html url-rewriting ssi


    【解决方案1】:

    在引用中添加$。来自:

     <!--#include virtual="DOCUMENT_URI" --> 
    

    到:

    <!--#include virtual="$DOCUMENT_URI" --> 
    

    【讨论】:

    • 虽然 $DOCUMENT_URI 在正常情况下确实可以工作,但 .htaccess 文件会导致它中断。
    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 2012-08-22
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多