12

.htm ファイルをキャッシュしないようにサーバーを構成しようとしましたが、分析パッケージでいくつかの問題が発生し、訪問者がブラウザーの [戻る] ボタンを押した場合にページが正しく表示されないためです。

以下を追加することで、それに取り組むことを試みました。

<FilesMatch "\.(htm)$">
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
Header set Warning "Testing"
</FilesMatch>

httd ファイルに追加しましたが、実行されていないように見えますが、FilesMatch の外にヘッダー セットを移動すると、正常に実行されたように見えます..

私たちがどこで間違っているのか、誰にもアイデアはありますか?

4

2 に答える 2

18

私は最近、同じ種類の問題を把握する必要がありました。この投稿は正しい方向を示していましたが、将来このトピックを検索する人々の啓発のために、いくつかの明確な情報を共有したいと思いました.

David さん、最初の FilesMatch は機能していませんでした。FilesMatch は、ファイル システムに存在する実際の物理ファイルに対してのみ機能するからです。http://httpd.apache.org/docs/current/sections.htmlは次のように述べています。

Directory および Files ディレクティブは、対応する正規表現とともに、ディレクティブをファイル システムの一部に適用します

これが、LocationMatch を使用した 2 番目の投稿で問題が解決された理由でもあります。また、http://httpd.apache.org/docs/current/sections.htmlから、次のように述べています。

一方、 Location ディレクティブとその対応する正規表現は、ウェブスペース内のコンテンツの構成を変更します。< SNIP > ディレクティブは、ファイルシステムとは何の関係もありません。たとえば、次の例は、特定の URL を mod_status によって提供される内部 Apache HTTP Server ハンドラにマップする方法を示しています。ファイルシステムに server-status というファイルが存在する必要はありません。

<Location /server-status>
    SetHandler server-status
</Location>

Apache ドキュメントでは、この動作を次のステートメントで要約しています。

Location を使用して、ファイルシステムの外部にあるコンテンツにディレクティブを適用します。ファイルシステムに存在するコンテンツの場合は、Directory と Files を使用します。< Location / > は例外で、サーバー全体に構成を適用する簡単な方法です。


仕組みをもっと理解したい人のために、これが私が内部を理解する方法です:

  • ロケーション ディレクティブは、HTTP 要求URIに基づいて一致します(例: example.com/this/is/a/uri.htmexample.com 部分なし)。
  • 一方、Directory および Files ディレクティブは、HTTP 要求 URI のそれぞれの部分に一致するDocumentRootのファイルシステムにディレクトリ パスまたはファイルがあるかどうかに基づいて一致します。

Apache ドキュメントでは、この動作を次のように要約しています。

何をいつ使うか

ファイルシステム コンテナーと Web スペース コンテナーのどちらを選択するかは、実際には非常に簡単です。ファイルシステムに存在するオブジェクトにディレクティブを適用するときは、常に Directory または Files を使用してください。ファイルシステムに存在しないオブジェクト (データベースから生成された Web ページなど) にディレクティブを適用する場合は、 Location を使用します。

[重要!] ファイルシステム内のオブジェクトへのアクセスを制限しようとするときは、Location を使用しないことが重要です。これは、多くの異なる Web スペースの場所 (URL) が同じファイルシステムの場所にマップされ、制限を回避できるためです。

于 2014-09-29T16:14:35.893 に答える
10

この問題は解決されました。

それを機能させるために、使用FilesMatchからに変更しLocationMatch、ヘッダーが完全に設定されるようになりました。

これは、ページが JSP ページから HTML ページにリダイレクトされているためだと考えられます。

<LocationMatch "\.(htm|html)$">
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
Header set Warning "Testing"
</LocationMatch>

うまくいけば、他の人がこれが役立つと思うでしょう。

于 2013-05-24T12:48:26.700 に答える