我正在考虑一种将导航栏添加到我所有网页的方法,当我更新文件时,所有页面也应该更新。
我在谷歌上研究了一段时间,我发现的是:
PHP
SSI
(我什至不知道这是什么)JavaScript
但是哪一个是最好的?有人能解释一下SSI
是什么吗?
我正在考虑一种将导航栏添加到我所有网页的方法,当我更新文件时,所有页面也应该更新。
我在谷歌上研究了一段时间,我发现的是:
PHP
SSI
(我什至不知道这是什么) JavaScript
但是哪一个是最好的?有人能解释一下SSI
是什么吗?
SSI(服务器端包含)已过时。我建议不要使用它们。JavaScript 可以工作,但您的浏览器必须下载一个附加文件才能构建页面。此外,禁用 JavaScript 的人将无法浏览您的网站。使用 JavaScript 来构建页面确实没有意义,所以除非你想要特殊效果,否则不要使用它。
PHP 是最好的选择。您只需在页面顶部包含导航脚本,例如include_once('nav.php');
.
But which one is the best
这取决于您已经在网站上使用的内容。
如果它写在 php 上,那么最好使用 php 进行包含。通过简单include('file_with_nav_bars_code');
地在模板或代码中的正确位置,您可以插入静态 html 代码或由上述文件生成的代码。
SSI(服务器端包含)适用于“静态”页面。它就像一个简单的脚本,可以在一些设置后由服务器完成。如果您检查 Apache 服务器的错误页面的模板,您将在那里看到 SSI 指令,其中包括页脚、标题、输出一些基本信息,如时间、请求的 URL 等。包含一些代码看起来像<!--#include virtual="/file_with_nav_bars_code" -->
,并且您甚至可以包含一些 CGI 脚本<!--#exec cgi="/cgi-bin/example.cgi" -->
在此处阅读更多内容http://httpd.apache.org/docs/2.0/howto/ssi.html 和此处http://en。 wikipedia.org/wiki/Server_Side_Includes
javascript 也适用于静态页面。您必须加载 javascript 代码,该代码将“生成”您需要的 html 代码并将其输出到您想要的页面上的位置。它有一个严重的负面影响 - 搜索引擎将无法跟踪由 js 生成的链接,因为它们不会运行它(因为 js 的访问者已关闭,但我不知道这种情况。即使是 Opera mini 也能够呈现简单js输出的结果)。简单的方法是将 js 脚本包含在您想要拥有导航栏的位置:
<script src='nav_bar.js'></script>
并且nav_bar.js
您将(作为一个非常简单的示例)如下所示:document.write('some html code of the bar here, with escaped new lines and quotes');
ps:多年的经验我都试过了:)早期的静态页面我用js和SSI,现在我只用php和其他服务器端脚本语言。您仍然可以将 javascript 与 php 生成的页面一起使用,但对于 SSI,您必须告诉网络服务器再一次传递 php 的输出以查找 SSI 指令,而不是将其返回给浏览器。
PHP 可以正常工作,但使用它意味着您必须进行一些不同的设置,包括执行以下操作:
.html
将文件重命名为.php
.php
文件require
SSI(服务器端包含)是一些没有人使用的古老东西。不要使用它们。但如果你好奇,看看mod_include。
客户端javascript可以工作,但你最好在服务器上做这种事情。
这里有一些其他选项需要考虑。
PHP 不是唯一的服务器端语言。你可能更喜欢 python、ruby、服务器端 javascript 等。
XSL 转换非常适合这种模板,可以由浏览器或服务器应用。跨浏览器的支持很好,并且已经有一段时间了。像“noscript”这样的扩展往往会破坏某些浏览器中的 XSL 转换,因此在可能的情况下通常首选将它们应用到服务器上。
您可以简单地将导航放在一个单独的 HTML 文件中,并将其包含iframe
在每个页面上。仅将此作为最后的手段。如果您不能使用服务器端语言,不能或不想使用 XSLT,并且页面相对较少,这可能会正常工作。否则,不要这样做。
SSI代表服务器端包含,这个概念意味着您的文件都将包含同一个文件(例如导航栏),因此当您对该文件进行任何更改时,它将反映在您的所有页面中。
PHP 和 javascript 是两个不同的东西,PHP 是一种服务器端语言,而 javascript 是一种客户端语言。
如果你只想要一个导航栏,PHP 就足够了。但是,如果您想添加任何客户端功能,例如在部分下的弹出菜单之类的东西,您也必须使用 javascript。
SSI 仍然适用于使用 v 函数或 % 的现代服务器(在 Apache/2.4.18 上测试)。
示例(导航包括):
<!--#include file="nav.html" -->
活动菜单项示例(如果对文档名称进行测试):
<!--#if expr='v("DOCUMENT_NAME")=~/about.html/'-->
<a class="active" href="#">
<!--#else -->
<a href="about.html">
<!--#endif -->
About</a>
示例 2(如果在文档路径上测试):
<!--#if expr="%{DOCUMENT_URI} =~ /product/"-->
Product path
<!--#else-->
Some other path
<!--#endif-->
.htaccess 让 SSI 工作(示例):
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes
旧的 Apache 版本使用不同的 expr 语法。