2

mod_headersGET パラメータに応じてファイルを強制的にダウンロードする必要があります。

  <FilesMatch "*.gif">
     <If "%{QUERY_STRING} =~ /dl/">
        #Download header
        Header set Content-Disposition "attachment"
     </If>
  </FilesMatch>

上記のコードはエラー 500 を生成します。ただし、適切にラップすると<IfModule>、何も実行されません。

<IfModule mod_headers>
  <FilesMatch "*.gif">
     <If "%{QUERY_STRING} =~ /dl/">
        Header set Content-Disposition "attachment"
     </If>
  </FilesMatch>
</IfModule>

mod_headersこれは、まったくロードされていないと思います。しかし、私はそれを有効にしていhttpd.confます:

...
LoadModule filter_module modules/mod_filter.so
LoadModule headers_module modules/ mod_headers.so
# LoadModule heartbeat_module modules/mod_heartbeat.so
...

どの mod がロードされ、何がロードされていないかを確認するためのデバッグ ログはありますか?

4

1 に答える 1

1

mod_headers.cモジュールを確認する必要があります。

<IfModule mod_headers.c>

( .so/.c に関するこの回答を参照してください)

しかし、500 エラーが発生する理由は 2 つあります。

まず、<FilesMatch>コンテナは正規表現を想定しており、「*.gif」は有効な正規表現ではありません。<Files>おそらく、コンテナを使用したいだけでしょう。

第 2 に、<If>Apache 2.2 では使用できず、バージョン 2.4 のみです。<If>Apache 2.4 を使用していない場合、コンテナーを使用することはできません。

于 2014-01-23T00:47:48.773 に答える