Принудительно использовать MIME-тип видео / webm с помощью .htaccess на основе запроса URI - PullRequest
9 голосов
/ 29 мая 2011

У меня есть правило перезаписи в .htaccess

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

с URI запроса, например: /123.fid/myfile.webm

Как заставить тип MIME: video/webm с помощью .htaccessвключая правило выше?

То, что я уже пытался, добавить в ТОП файла .htaccess без успеха:

AddType video/webm .webm

и

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

Я используюМодуль apaches mime_magic для поиска MIME-файлов .fid, но это не относится к файлам webm.Я предполагаю, что это RewriteRule, который вызывает проблемы с типом файла, и мне нужно как-то искать webm в запросе uri.

Если я делаю: AddType video/webm .fid отправляется правильный тип MIME - ноэто нарушает любой другой формат файла, хранящийся в .fid.Использование .fid является требованием к дизайну и не может быть изменено.

* Редактировать:

Я также попытался:

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

и

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

с тем же результатом.Тип пантомимы - text/plain.Может ли это быть модуль mime_magic?

Я также попытался добавить: DefaultType video/webm, который работает.На данный момент это самое близкое решение, поскольку модуль mime_magic, похоже, находит правильные типы mime для отправки, но я не нахожу это особенно элегантным решением

* Edit2 : AddType video/webm .fid Работает - как я могу условно сделать AddType на основе запроса URI?

Ответы [ 4 ]

6 голосов
/ 16 ноября 2011

Это сработало для меня, когда я добавил следующие строки в мой файл .htaccess:

<IfModule mod_rewrite.c>
  AddType video/ogg .ogv
  AddType video/webm .webm
  AddType video/mp4 .mp4
</IfModule>
6 голосов
/ 29 мая 2011

Вы можете использовать T-флаг в RewriteRule:

RewriteRule someRegEx$ - [T=video/webm]

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

3 голосов
/ 29 мая 2011

Если вы отправляете данные с помощью сценария (не реальных файлов), сценарий должен отправить правильные заголовки, например, с помощью 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
1 голос
/ 04 июня 2011

Не удалось заставить его работать в Apache, я сдался и вместо этого перешел на nginx. Я получил его для работы в nginx, используя:

location ~\.webm$ {
  add_header Content-Type video/webm;
  rewrite  (.+?\.fid)/ /$1  break;
}
...