我目前正在开发个人网站。这不是我第一次这样做,但这是我第一次尝试实施 SSI。然而,我用 if-else 指令让自己陷入了困境,该指令使用 CGI 环境变量之一作为比较的一部分。
即使经过一些有限的调试尝试,我拥有的所有输出和文档都意味着正在进行的比较应该彻底失败。情况并非如此,并且 if-else 指令进行了错误的评估。
这是文件中的代码index.shtml
:
<head>
<!--#set var="page" value="Home" -->
<!--#include file="headlinks.shtml" -->
<style>
img#ref { float: right; margin-left: 8px; border-width: 0px; }
</style>
</head>
这是文件中的代码headlinks.shtml
:
<title><!--#echo var="page" --> – <!--#echo var="HTTP_HOST" --></title>
<!--#set var="docroot" value="${DOCUMENT_ROOT}" -->
<!--#echo var="docroot" -->
<!--#if expr="( $docroot != '/Applications/MAMP/htdocs' ) || ( $docroot != '/home/dragarch/public_html' )" -->
<link rel="stylesheet" type="text/css" href="../style.css">
<link rel="shortcut icon" type="image/svg+xml" href="../favicon.svg" />
<!--#else -->
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="shortcut icon" type="image/svg+xml" href="favicon.svg" />
<!--#endif -->
这是文件的输出index.shtml
:
<title>Home – dragarch</title>
/Applications/MAMP/htdocs
<link rel="stylesheet" type="text/css" href="../style.css">
<link rel="shortcut icon" type="image/svg+xml" href="../favicon.svg" />
两者style.css
和favicon.svg
都在文档根目录中index.shtml
,因此 if 指令应该失败并默认为 else 指令的输出。如您所见,虽然根据 echo 指令的输出,文档根目录(当前是我自己笔记本上的 MAMP htdocs 文件夹)是正确的,但 if-else 指令中的比较无法正确比较字符串。
我将此页面用于我的文档:http ://httpd.apache.org/docs/2.2/mod/mod_include.html
我完全不知道为什么会这样,在这里需要一些帮助。
编辑:我应该注意这dragarch
是我配置/etc/hosts
为指向 127.0.0.1 的主机名,因此我可以测试站点而无需使用localhost
. 它对任何东西的功能都没有真正的影响,只是充当一个更漂亮的主机名来使用。