中田さん、いとさん、こんにちは。
中田さんの、
オプションの
> ○SSIを許可する ○index.html ○*.shtml ×*.html
の「index.html」というのは「/index.html」と、最初に「/」がついているはずです。
……確かに / がついています。。。
2年使っていて初めて知りました……。
中田さん、いとさんから指摘のあった、
ブラウザがIEなら、ブラウザのキャッシュを見ているのではないでしょうか?
私も 11.はブラウザのキャッシュを表示しているのだと思います。
は、毎回キャッシュを消してリロードすることで確かにサーバとしての動作通りになりました。ログを見ても確かに 304 でした。ブラウザはキャッシュを見てもSSI的に表示される日付は更新されていたので、全く疑問に思っていませんでした。
勉強になりました。ありがとうございました。
fqueenさん
私も 11.はブラウザのキャッシュを表示しているのだと思います。
そのときのステータスコード(httpd.logで各行の右から二つ目の数字)は
200ではなく 304になっているのではありませんか?
IEで強制リロード(Ctrlキーを押しながら更新ボタンをクリック)すると
更新日時は表示されなくなりませんか?
fqueen さん、
そういうことだとすると話が違いますね。
2.と11.がおかしいです。
オプションの
> ○SSIを許可する ○index.html ○*.shtml ×*.html
の「index.html」というのは「/index.html」と、最初に「/」がついているはずです。
つまり、ドキュメントルート直下の index.html という意味ですから、「○/index.html」の場合、
http://127.0.0.1/~sv/index.html
では SSI は有効になりません。
http://127.0.0.1/index.html
なら SSI が有効です。
「○*.html」にしてやれば(つまり、9.)
http://127.0.0.1/~sv/index.html
でも SSI が有効になります。
「*.html」のチェックをはずせば、
http://127.0.0.1/~sv/index.html
では SSI が動作しないというのが正しい動作です。
8.は *.shtml でSSIが有効ですからちゃんと動作して正常です。
ですから、2.と11.がおかしいのです。
ちょとわかりませんが、
ブラウザがIEなら、ブラウザのキャッシュを見ているのではないでしょうか?
IEのオプションの「インターネット一時ファイル」の設定を「ページを表示するごとに確認する」にしてもう一度確認してみてください。
それでも同じなら、AN HTTPD のオプションのログでトレースにチェックを入れて、一連の動作をおこない、その時の trace.log をメールで送ってください。
こんにちは、中田さん。そちらでは再現しませんでしたか……。
私の方は再度行ってみましたが、再現しました。
昨日とは違う方法ですが、以下に再現方法を書きます。
現在wwwサーバとなっているPC(仮に A )
An HTTPDを一度もサーバとして使ったことのないPC(仮に B )
1.A のPCは現在稼働中で、ルート以下は次のようになっている(必要分のみ)
/ssi/ssisample.shtml /SV/public_html/index.html(ここのSVは大文字)
オプション−一般の設定は次のようになっている(必要分?のみ)
ドキュメントルート c:\server
デフォルトインデックス index.html
/~sv -> ドキュメントルート \sv/public_html(ここのsvは小文字)
リモートホスト 取得しない
○SSIを許可する ○index.html ○*.shtml ×*.html
/SV/public_html/index.html には、次のようなSSIが仕込んである
<a href="./aaa/bbb.txt">最新のbbb </a> <!--#config timefmt="%Y/%m/%d"--> <!--#flastmod file="./aaa/bbb.txt"--><br>
2.これをローカルでチェックすると、しっかり更新日時が表示される。
3.この A のPCのサービスを停止し、ルート以下を B のPCに全てコピーして、B のPCでサーバを起動。(ここで、c:\httpdとする)
4.すると、オプション−一般 で、ドキュメントルートや、
/~sv -> ドキュメントルート \sv/public_html のsvの部分が B のPCのユーザ名に変わっている。それと、SSIを許可する のチェックが外れている。
5.ドキュメントルートと/~sv ->の部分のドキュメントルートを B のPCのユーザ名からsvに修正する。
6.SSIを許可する にチェックを入れる。
7.この状態で B のPCのブラウザ(IE6.0)でhttp://127.0.0.1/~sv/index.htmlをチェックすると、更新日時が表示されない。
8.しかし、http://127.0.0.1/ssi/ssisample.shtmlをチェックすると、しっかり表示される。
9.SSIを許可するの一番右にある、*.html にチェックを入れる。
10.この状態で再度チェック(ブラウザをリロード)すると、更新日時が表示される。
11.この後は*.html のチェックを外してもしっかりと更新日時が表示される。
以上でした。
fqueen さん、
新たに設定をし直したらそうなったという意味でしょうか?
確かにそういう動作をするとすればおかしいですね。
が、とりあえず私のところでは再現できません。
こんにちは。An HTTPDを2年くらい使用(現在は1.42k)しています。
使用していて、気になる動きがあったので報告します。
私は今回、ルート以下(仮にc:\server\httpd)をフォルダごと退避させ、HDDをフォーマット、OS(XPPro)再構築後、退避してあったフォルダを構築後のHDDに戻しました(c:\httpd)。この際、レジストリが使用されているのでHTTPDのいろいろな設定がリセット(再構築)されるのはわかるのですが(例えばユーザ認証がリセットされるとか、logの保存フォルダとか、ドキュメントルートなど)、それまで使えていたSSIが動かなくなりました。(ここで、「SSIを許可する」「index.html」「*.shtml」には退避前も後もチェックが入っています。)
ssisample.shtmlは正常に動く。ドキュメントルート下のindex.htmlのssiは動かない……。という困った現象が起こりましたが、次の方法で解決しました。
「*.html」のチェックを入れる。(その後はチェックを外してもssiは正常に動作)
これだけだったのですが、サーバの動きとしてはおかしいと思ったので報告しました。
こんな管理方法の私が一番悪いと思うのですが……。