【发布时间】:2012-11-09 05:44:31
【问题描述】:
我目前正在开发个人网站。这不是我第一次这样做,但这是我第一次尝试实施 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 指令的输出。如您所见,虽然文档根目录(目前是我自己笔记本上的 MAMP htdocs 文件夹)根据 echo 指令的输出是正确的,但 if-else 指令中的比较无法正确比较字符串。
我正在使用此页面作为我的文档:http://httpd.apache.org/docs/2.2/mod/mod_include.html
我完全不知道为什么会出现这种情况,在这里需要一些帮助。
编辑: 我应该注意到dragarch 是我在/etc/hosts 中配置的主机名,指向127.0.0.1,因此我可以测试该站点而不必使用localhost。它对任何东西的功能都没有真正的影响,只是充当一个更漂亮的主机名来使用。
【问题讨论】:
标签: ssi