我想在许多网页中包含标题所以我想创建一个文件并包含在所有页面中。我发现一种方法是通过 SSI(服务器端包含),但它需要将网页的扩展从 Html 更改为 sHtml(由于某些限制,我不能这样做)。
有没有办法在不改变扩展名的情况下做到这一点?
上次我检查(几年前)时,使用 Apache,如果您使 html 文件可以通过 httpd 进程执行,它们将像 shtml 一样运行,而无需重命名它们。
我将这样做的安全隐患留给您自己评估。
最好的方法是包含包含的 PHP 文件。SSI 运行良好,但您必须拥有 .shtml 文件。
不推荐的方法是使用 iframe 来包含标题。也可以使用 Javascript,但使用客户端包含并不好。jQuery 也将是客户端包含。
您可以设置 .html 文件以使用 SSI,但如果您有限制,这很可能是您无法克服的限制。托管服务器帐户在大多数情况下不允许这样做。
SSI 上的 Apache 服务器文档。 http://httpd.apache.org/docs/current/howto/ssi.html
要在您的服务器上允许 SSI,您的 httpd.conf 文件或 .htaccess 文件中必须有以下指令:
Options +Includes 这告诉 Apache 您希望允许为 SSI 指令解析文件。请注意,大多数配置包含多个可以相互覆盖的选项指令。您可能需要将选项应用到您希望启用 SSI 的特定目录,以确保最后对其进行评估。
不只是为 SSI 指令解析任何文件。您必须告诉 Apache 应该解析哪些文件。有两种方法可以做到这一点。您可以使用以下指令告诉 Apache 解析具有特定文件扩展名的任何文件,例如 .shtml:
AddType text/html .shtml AddOutputFilter INCLUDES .shtml 这种方法的一个缺点是,如果您想将 SSI 指令添加到现有页面,则必须更改该页面的名称以及该页面的所有链接,以便给它一个 .shtml 扩展名,以便执行这些指令。
另一种方法是使用 XBitHack 指令:
XBitHack 上的 XBitHack 告诉 Apache 为 SSI 指令解析文件,如果它们设置了执行位。因此,要将 SSI 指令添加到现有页面,而不必更改文件名,您只需使用 chmod 使文件可执行。
chmod +x pagename.html 关于不该做什么的简短评论。您偶尔会看到有人建议您只告诉 Apache 为 SSI 解析所有 .html 文件,这样您就不必弄乱 .shtml 文件名。这些人可能没有听说过 XBitHack。要记住的是,通过这样做,您需要 Apache 读取它发送给客户端的每个文件,即使它们不包含任何 SSI 指令。这可能会减慢速度,这不是一个好主意。
您可以使用 jQuery/AJAX 方法
$.get('ajax/test.html', function(data) {
$('.result').html(data);
alert('Load was performed.');
});