2011-05-29 80 views
9

我在.htaccess强制视频/ WEBM MIME类型基于请求URI

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

重写规则与请求的URI,如:/123.fid/myfile.webm

我如何可以强制MIME类型来:video/webm使用.htaccess包括上面的规则?

我已经尝试,对.htaccess文件的顶部添加没有成功:

AddType video/webm .webm 

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

我用阿帕奇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模块interfiering?

我也试图添加:DefaultType video/webm哪个有效。这是最接近的解决方案目前,作为mime_magic模块似乎找到了正确的MIME类型来发送,但我不觉得这是一个特别优雅的解决方案

* EDIT2AddType video/webm .fid是工作 - 如何我可以根据请求uri有条件地执行AddType吗?

+0

你服务真正的文件或虚拟的网址? – vbence 2011-05-29 17:09:46

+0

.fid文件是真实的文件,当我重写URL包含myfile.webm – 2011-05-29 17:11:51

回答

1

无法得到这个Apache一起工作,我放弃了,感动改为nginx。我得到了它的使用nginx的工作:

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

您可以使用T-标志的重写规则:

RewriteRule someRegEx$ - [T=video/webm] 

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

+2

谢谢,我给了这个镜头。但是,似乎某个地方重写了这个.htaccess指令?除非我的语法关闭.. – 2011-05-29 17:19:47

+0

是否mod_rewrite实际启用? – Floern 2011-05-29 17:33:19

+0

是的,该文件得到了服务,但与不正确的MIME类型 – 2011-05-29 18:53:58

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 
+0

我不通过脚本发送文件。这些文件是以.fid文件结尾的实际文件(并且包含各种数据类型) – 2011-05-29 17:13:40

+0

我根据您的评论编辑了答案。 – vbence 2011-05-29 17:14:30

+0

如果你已经仔细阅读了我的文章,你应该注意到:“如果我这样做:AddType video/webm .fid发送正确的mime类型 - 但是这打破了存储在.fid中的任何其他文件格式。一个设计要求,不能改变。“ – 2011-05-29 17:16:33

6

它的工作对我来说,当我添加下面的几行我.htaccess文件:

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

这不起作用,因为物理文件是.fid文件,而不是.webm - .webm仅通过重写 – 2011-12-16 20:35:07

+0

添加,谢谢这对我有用!尽管它不回答这个问题。 – woony 2012-09-25 12:51:43