2

Apache 2.2 を実行しており、次の .htaccess スニペットを使用していくつかのファイルを強制的にダウンロードしています。

<Files *.*>
        ForceType application/octet-stream
        Header set Content-Disposition attachment
</Files>

影響を受けるすべてのファイルは 1 つのサブフォルダーにあるため、これまでのところうまくいきました。残念ながら、これが時々問題を引き起こすことが判明しました (例えば、jplayer はそれを好まない)。これらのファイルのデフォルトの動作または強制ダウンロードを選択的に使用する必要があります。

URL パラメーターを使用して動作を選択することは、何らかの方法で可能であるに違いないと思います。

http://example.com/files/music.mp3

通常の動作を引き起こします (つまり、MP3 を再生できるブラウザはそうし、jplayer は文句を言いません)。

http://example.com/files/music.mp3?download=1

ダウンロードを強制します。ただし、パラメーターの存在に基づいて ForceType を選択的に使用する方法がわかりません。一部のPHPで簡単に可能であることはわかっていますが、可能であれば避けたいと思います。

助けてくれてありがとう!

4

2 に答える 2

1

これを行うかなり効率的な方法は、/download/ という名前の別のフォルダーを作成し、その中に htaccess スニペットを入れて、この追加された書き換えルールを使用してすべての /download/ ファイル要求を /file/ フォルダーにリダイレクトすることです。 .htaccess

RewriteEngine on
RewriteRule ^(.*)$ files/$1 [L] 

分析/ログの目的で、ダウンロードを適切なセマンティクスで個別に識別し、.htaccess の影響を受けない /files/ リクエストの .htaccess パフォーマンスのマイナス面なしに、通常は html 埋め込みの使用のために /files/ を呼び出すことができます。 /download/ フォルダーから。

于 2013-04-22T09:02:55.907 に答える
1

同様の質問がすでにここで回答されています:

https://stackoverflow.com/a/7446204/2291963

QueryString を読み取り、使用するファイル拡張子に合わせて設定します。

于 2013-04-22T10:36:19.080 に答える