我目前正在開發個人網站。這不是我第一次這樣做,但這是我第一次實施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