【问题标题】:#include file Directive not working#include 文件指令不起作用
【发布时间】:2021-10-14 22:20:15
【问题描述】:

所以我要处理这个新网站:http://www.kineformeconcept.com/mtl/index.shtml

自从客户端移动到托管位置后,菜单不再显示。

我从未使用过 #include file="whatever.html" 指令。

我现在是一个 ASP 指令,但我从未使用过 ASP。我应该从哪里开始?

如果有人想查看代码,在第 66 行:

<td align="center" valign="top" bgcolor="#ededee"><!--#include file="menu.html" --></td>

【问题讨论】:

  • 新主机不支持经典ASP,就这么简单。
  • @ShadowWizard - 假设它甚至是用 ASP 编写的。我开始认为情况可能并非如此。
  • @AnonJr 这是经典的 ASP 语法,听起来它曾经在以前的主机上工作过。
  • 你有没有显示任何错误?如果不是,渲染页面中打印的内容是什么?
  • 正如 AnonJr 在下面指出的,Classic ASP 支持 #indlude 文件和 #include 虚拟指令,但这并不一定意味着它是一个 ASP 站点,事实上它很可能不是。吨。了解您的服务器是否支持或可以支持服务器端包含。 httpd.apache.org/docs/current/howto/ssi.html

标签: asp-classic


【解决方案1】:

#include 指令本身不是 ASP 的一部分 - 它是一个服务器指令,是 Web 服务器本身的一部分,并且独立于您使用的脚本语言。

如果它在一台服务器上运行,但在新服务器上停止运行,那么最可能的罪魁祸首是配置错误的服务器。*

  • 如果您自己托管它,则在哪里寻找修复它取决于 在您使用的服务器软件上以及该软件的版本 您正在使用的软件。
  • 如果您不是自己托管,您可能需要联系您的主机 关于启用适当的功能。

到目前为止的假设是您使用的是 ASP-Classic,因为这就是问题的标记,并且您在问题本身中提到了 ASP...但是您的链接是指向 .shtml 页面和内容这个问题让我相信它只是带有一些 #include 语句的静态 HTML。


除了半随机 - 没关系,但如果您已经转移到更……特别的……服务器软件,它可能只是担心&lt;!--#include。而不是:

<td align="center" valign="top" bgcolor="#ededee"><!--#include file="menu.html" --></td>

放:

<td align="center" valign="top" bgcolor="#ededee"><!-- #include file="menu.html" --></td>

【讨论】:

    【解决方案2】:

    您页面的文件名是.shtml

    应该是.asp,然后#include file#include virtual 应该可以工作。

    【讨论】:

    • 大多数服务器都设置为将.shtml 文件识别为包括服务器指令,并将对其进行处理。这就是 .shtml 扩展的用途 - 带有包含和其他服务器指令的纯 HTML,无需运行其他解析器。
    • Apache 服务器通常设置为识别 .shtml,但我认为 IIS 不是这种情况,(如果它运行 ASP,它必须是 IIS)。所以是的,将 .shtml 扩展名更改为 .asp 应该可以。如果这意味着在站点中拖网以更改链接负载,那么另一种方法是通过 IIS 管理器中的处理程序映射将 .shtml 扩展名映射到 asp.dll
    • 不幸的是,将扩展名更改为 .asp 不起作用。感谢您的帮助!
    • @John - IIS 可以设置为识别.shtml,我使用的大多数主机都默认启用它。有些没有,我似乎记得较新版本的 IIS 要求您启用任何形式的动态内容 - 因此我最初的答案是配置错误的服务器。
    【解决方案3】:

    您的新主机不支持经典 ASP。但是,对于这样一个简单的事情,您并不需要经典 ASP 的强大功能。您可以使用 jQuery 轻松地将菜单加载到表格单元格中。

    首先,为单元格赋予唯一的 id:

    <td id="MenuCell" align="center" valign="top" bgcolor="#ededee">
    

    现在在您的代码中包含 jQuery 库:

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    

    最后将此代码添加到您的页面:

    <script type="text/javascript">
    $(document).ready(function() {
        $("#MenuCell").load("menu.html");
    });
    </script>
    

    完成,您现在将看到菜单到位,无需服务器端代码。

    【讨论】:

    • 是的...我不想经历所有这些麻烦。该网站是相当古老的学校。如果我选择这条路线,我将不得不在所有页面上都这样做。无赖!
    • @PMaly 您可以将 JS 代码放在单独的文件中,如果有任何帮助,只需使用 &lt;script type="text/javascript" src="LoadMenu.js"&gt;&lt;/script&gt;
    猜你喜欢
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多