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;
}