現在個人サイトを制作中です。これは初めてのことではありませんが、SSI の実装への最初の主要な進出です。しかし、比較の一部として CGI 環境変数の 1 つを使用する if-else ディレクティブを使用して、壁にぶつかりました。
限定的なデバッグを試みた後でも、私が持っているすべての出力とドキュメントは、行われている比較が完全に失敗することを意味します。そうではなく、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
なぜこれが当てはまるのか、私は完全に途方に暮れており、ここで少し助けが必要です.
編集:を使用せずにサイトをテストできるように、127.0.0.1 を指すdragarch
ように構成したホスト名であることに注意してください。使用するよりきれいなホスト名として機能することを除いて、何の機能にも実際の影響はありません。/etc/hosts
localhost