2011-05-29 79 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