質問

画像のヘッダーの有効期限が条件付きで設定して、プロジェクトが開発中にキャッシュされないようにしますが、生産中の場合は意志があります。理想的には、これはApache confファイルの変更にすぎません。プロジェクトのステータスを返すPerlスクリプトがあります。これは、次のようにmod_rewriteで使用できます。

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/run/$site/p(\d+)/(\w+) /logout.pl/$2 [NS,L]

次のようなことができればいいでしょう。

rewritecond ${PSTAT:$site:$1} =devel
ExpiresByType image/jpg "now plus 1 second"

もちろんそれはうまくいきません。

解決策はありますか?

役に立ちましたか?

解決

私のために働いたトリックは、最初にヘッダーを無条件に設定することです。

ExpiresByType image/jpg "now plus 1 second"
...

そして、私たちが開発モードになっている場合に備えて、ヘッダーを設定するために:

Header set Cache-control "no-cache" env=devel
Header unset expires env=devel

これには、ブールのenvを持っている必要があります devel モードに基づいて以前に初期化されました。私たちの場合、ホスト名は、私たちが開発するかどうかを決定します(Devel.domain.com対www.domain.com)。

他のヒント

エイリアンハルトが言ったことから始めて、私は自分の問題に対する答えを思いつきました。

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/images/(\d+)/(\w+) - [E=devel:1]

header set cache-control "no-cache" env=devel
header unset expires env=devel

(/images/(\d+) 特定のプロジェクト番号の画像のフォルダーですか (\d+))

E の旗 rewriterule ルールが一致する場合、環境変数を設定できます。 - 実際には何も書き直しません。したがって、これはスクリプトの出力を使用してチェックします rewritecond プロジェクト番号をから送信します rewriterule, 、そして、両方の条件が一致する場合に環境変数を設定します。それで header その環境変数の存在に基づいて条件付きで設定されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top