9

.htaccess に書き換えルールがあります

RewriteRule   (.+?\.fid)/ /$1 [L]

次のようなリクエスト URI を使用します。/123.fid/myfile.webm

video/webm上記のルールを含む.htaccessを使用して、MIMEタイプを強制するにはどうすればよいですか?

成功せずに.htaccessファイルのTOPに追加するために、私がすでに試みたこと:

AddType video/webm .webm

<FilesMatch  "\.webm$">
  ForceType video/webm
</FilesMatch>

apaches mime_magic モジュールを使用して .fid ファイルの mime タイプを調べていますが、これは webm ファイルには当てはまりません。ファイルの種類に問題を引き起こしているのは RewriteRule だと思います。リクエスト uri で webm を探す必要があります。

私が行う場合:AddType video/webm .fid正しい MIME タイプが送信されますが、.fid に保存されている他のファイル形式が壊れます。.fid の使用は設計要件であり、変更できません。

*編集:

私も試みました:

RewriteCond %{REQUEST_URI} \.webm$
RewriteRule .* - [T=video/webm]

RewriteRule \.webm$ - [T=video/webm]

同じ結果で。提供される MIME タイプはtext/plain. これは mime_magic モジュールの干渉でしょうか?

私も追加しようとしました:DefaultType video/webmこれは機能します。mime_magic モジュールは送信する正しい MIME タイプを見つけるように見えるため、これは現在のソリューションに最も近いものですが、これが特にエレガントなソリューションであるとは思いません

*Edit2 : AddType video/webm .fidIS は機能しています - リクエスト URI に基づいて条件付きで AddType を実行するにはどうすればよいですか?

4

4 に答える 4

7

RewriteRule で T フラグを使用できます。

RewriteRule someRegEx$ - [T=video/webm]

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_t

于 2011-05-29T16:55:37.940 に答える
6

.htaccessファイルに次の行を追加すると、うまくいきました。

<IfModule mod_rewrite.c>
  AddType video/ogg .ogv
  AddType video/webm .webm
  AddType video/mp4 .mp4
</IfModule>
于 2011-11-16T00:35:27.127 に答える
3

スクリプト (実際のファイルではない) を使用してデータを送信する場合、スクリプトは、たとえば PHP を使用して (他の出力の前に) 正しいヘッダーを送信する必要があります。

header("Content-type: video/webm");

実際のファイルの場合、(書き換えの代わりに) コンテンツ ネゴシエーションを使用できます。

AddType video/webm .fid

編集:

残念ながら、私はApacheの近くにいませんが、これは試してみる価値があるかもしれません:

RewriteCond %{REQUEST_URI} \.webm$
RewriteRule (.*) $1 [E=is_webm:true]

Header set Content-Type video/webm env=is_webm
于 2011-05-29T17:11:18.303 に答える
1

これを Apache で動作させることができなかったので、あきらめて代わりに nginx に移行しました。次を使用してnginxで動作するようにしました:

location ~\.webm$ {
  add_header Content-Type video/webm;
  rewrite  (.+?\.fid)/ /$1  break;
}
于 2011-06-04T13:20:35.050 に答える