【发布时间】: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