0

現在個人サイトを制作中です。これは初めてのことではありませんが、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" --> &ndash; <!--#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 &ndash; 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/hostslocalhost

4

1 に答える 1

0

簡単なチェック: if ステートメントを else の前に 2 つの条件に分割してみてください。どちらが正しく評価されていないかを確認してください。両方の条件がある場合は、条件がどのように評価されているかを再確認する必要があります。おそらく、 expr = ステートメントのために両方とも true を返しているのでしょうか? 私は ssi についてまったく知りませんが、一部の言語では、var_name = は常に true であり、== は比較であると言っていることは知っています。

于 2012-11-09T06:16:17.420 に答える