web-dev-qa-db-ja.com

Content-DispositionHTTPヘッダーを設定するためのSetEnvIf正規表現

IHS 7.0/Apache 2.2 SetEnvIfディレクティブを使用して、ダウンロードしたファイルのファイル名をurlパラメーターに基づいて設定しようとしています。私はかなり近いと思いますが、ファイル名にスペース(エンコードされているかどうかに関係なく)があると失敗します。

uRLの例:

http://site.com/path/to/filename.ext/file-title=Nice File Name.ext?file-type=foo

Apache構成:

SetEnvIf Request_URI "^.*file-title\=(.*)\??.*$" FILENAME=$1
Header unset "Content-Disposition"
Header add "Content-Disposition" "attachment; filename=%{FILENAME}e"
UnsetEnv FILENAME

アプリケーションは、例で「NiceFileTitle.ext」として表示されているものを指定します。スペースがない場合、これはすべてうまく機能しますが、スペースがある場合、ダウンロードするファイル名は「Nice」と表示されます。クエリ文字列に2番目のパラメータセット(?file-typeなど)がある場合とない場合があります

3
Erik Sorensen

わかりました-正規表現をそのままにして、ヘッダーの追加を変更することでうまくいきました。

filename=\"%{FILENAME}e\""

引用符で囲みます。はぁ。

0
Erik Sorensen