我使用 MAMP 开发网站。每个网站都在 htdocs 文件夹中的自己的文件夹中。我管理一个需要使用 ssi 指令的网站,因为主机不允许 php 包含。
我已在 httpd.conf 文件中取消注释以下几行:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
我在 htdocs 文件夹中添加了一个 .htaccess 文件,内容如下:
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes
在站点索引页上,包含以下内容:
<!--#include file="top-nav.shtml" -->
但它不适用于任何子文件夹中的文件。我收到此错误:
[在执行此命令时出现的错误]
答案1
您是否也在所有子文件夹页面上使用完全相同的include
指令?如果是这样,您的问题似乎很明显:您没有正确链接到包含文件(除非您在网站的每个目录中都有相同的文件,但这有点违背了目的)
除此之外,我想知道您在服务器上遇到的错误是什么?您认为 SSI 为何未“启用” - 尤其是考虑到它至少在一个文件上工作。
答案2
不确定这个问题是否已解决,因为问题仍然悬而未决。
补充一些说明。当包含的文件与引用它的文件位于同一目录中时,使用“文件”。当文件位于子目录中时,使用“虚拟”。
此外,这只是我的意见,但将包含的内容放在他们自己的目录中(通常名为“inc”或“includes”)是一种很好的做法。
因此,对于您想要完成的任务,您需要使用...
<!--#include virtual="../inc/top-nav.html" -->