2

以下が機能する10年前のApacheサーバー(FreeBSD)を持っています:

File1.htm

<!-- #set var="myDir" value="/dir" -->

File2.htm

<!-- #include virtual="File1.htm" -->    //sets myDir
<!-- #include virtual="${myDir}/File3.htm" --> //loads /dir/File3.htm

File3.htm

<!-- #include virtual="${myDir}/File4.htm --> //loads /dir/File4.htm

最新の Apache を搭載したごく最近の Suse Linux では、myDir が File3.htm で定義されていないようで、File4 を見つけてロードできません。

したがって、File2 は File3 をロードできますが、File3 は File4 をロードできません。FreeBSD 上の 10 年前の Apache では動作しますが、最近の Linux 上の Apache では動作しません....

何か案は?

編集 完全を期すために、これは基本的に構成ファイルです。

DocumentRoot "/srv/www/htdocs"
<Directory "/srv/www/htdocs">
        Options Includes
        AddType text/html .htm
        AddOutputFilter INCLUDES .htm
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>
4

1 に答える 1

2

Ubuntu 11.04 システム (Apache 2.2.17 を使用) でテストを行いましたが、まったく問題はありませんでした。
私が使用したファイルは次のとおりです。

File1.htm (File2.htm と同じフォルダーにあります)

<ul>
    <li>
        <p>Start File1</p>
        <!--#set var="myDir" value="/test/stackoverflow/ssi" -->
        <!--#echo var="myDir" -->
        <p>End File1</p>
    </li>
</ul>

File2.htm (File1.htm と同じフォルダーにあります)

<!DOCTYPE html>
<html>
    <head>
        <title>Apache SSI test</title>
    </head>
    <body>
        <ul>
            <li>
                <p>Start File2</p>
                <!--#include virtual="File1.htm" -->
                <p><!--#echo var="myDir" --></p>
                <!--#include virtual="${myDir}/File3.htm" -->
                <p>End File2</p>
            </li>
        </ul>
    </body>
</html>

File3.htm (「ssi」サブフォルダーにあります)

<ul>
    <li>
        <p>Start File3</p>
        <p><!--#echo var="myDir" --></p>
        <!--#include virtual="${myDir}/File4.htm" -->
        <p>End File3</p>
    </li>
</ul>

File4.htm (「ssi」サブフォルダーにあります)

<ul>
    <li>
        <p>Start File4</p>
        <p><!--#echo var="myDir" --></p>
        <p><!--#echo var="DATE_LOCAL" --></p>
        <p>End File4</p>
    </li>
</ul>

これは私の「.htaccess」ファイルです:

Options +Includes
AddType text/html .htm
AddOutputFilter INCLUDES .htm

そして、ブラウザで「File2.htm」ページをリクエストして得た出力は次のとおりです。

  • ファイル 2 を開始

    • ファイル 1 を開始

      /test/stackoverflow/ssi

      終了ファイル 1

    /test/stackoverflow/ssi

    • File3 を開始

      /test/stackoverflow/ssi

      • File4 を開始

        /test/stackoverflow/ssi

        2012 年 8 月 30 日木曜日 21:45:57 CEST

        終了ファイル 4

      ファイル3を終了

    終了ファイル 2


次のことも行う必要があります。

  • すべてのファイルが Web サーバーによって読み取り可能であることを確認するためだけに、すべての .htm ファイルとインクルード フォルダー (この例では "/dir" フォルダーである必要があります) のアクセス許可を確認してください。
  • Apache エラー ログでエラーを確認する

ところで、「File3.htm」の最後の引用符が抜けているのは単なるタイプミスだと思います。

于 2012-08-30T20:16:38.007 に答える