Force video / webm MIME тип использования.htaccess на основе uri запроса

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

RewriteRule   (.+?.fid)/ / [L]

с запросом URI like:/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. Я предполагая, что это перезапись, которая вызывает проблемы с типом файла, и мне нужно как-то искать webm в uri запроса.

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

* Edit:

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

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

и

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

С тем же результатом. Обслуживаемый тип mime text/plain. Может ли это быть модуль mime_magic interfiering?

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

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

4 ответов


вы можете использовать t-флаг в перезаписи:

RewriteRule someRegEx$ - [T=video/webm]

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


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

<IfModule mod_rewrite.c>
  AddType video/ogg .ogv
  AddType video/webm .webm
  AddType video/mp4 .mp4
</IfModule>

Если вы отправляете данные со скриптом (не реальные файлы), то скрипт должен отправить правильные заголовки, например, с PHP (перед любым другим выходом):

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

в случае реальных файлов вы можете использовать content-negotiation (вместо перезаписи) и:

AddType video/webm .fid

Edit:

к сожалению, я не рядом с apache, но это может стоить попробовать:

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

Header set Content-Type video/webm env=is_webm

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

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