我目前正在开发个人网站。这不是我第一次这样做,但这是我第一次实施SSI。然而,我已经将自己投入到了一堵墙中,并且使用了一个if-else指令,该指令使用其中一个CGI环境变量作为其比较的一部分。SSI:与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
主机名。它对任何东西的功能都没有实际影响,除了只是作为一个更漂亮的主机名来使用。
expr =是if指令语法的一部分。 expr =之后的引号内的所有内容都是正在测试的条件。 –
感谢您的意见和产生的顿悟。 :)只需把它变成一个xor表达式即可。 –
不客气!我每周都积极地为学生开设一个通用的工程编程课程,所以很自然地可以跳出帮助的机会,即使我所做的只是让您重新考虑您的代码。< – 2012-11-09 06:47:19