2012-10-19 92 views
2

我遇到了問題.htaccess文件,通常它會檢查用戶引用程序,如果來自我的網站,它允許訪問流mp4文件,但現在我想允許流式傳輸到Android和iOS設備,我使用html5標籤,但它不會發送http_referer,所以我想檢查用戶代理以允許mp4文件流,這是我的,但它不起作用。.htaccess HTTP_USER_AGENT不起作用

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} "Android|iPod|iPhone|iPad" [NC,OR] 
RewriteCond %{HTTP_REFERER} !^http://(direct\.|www\.)?mysite\.com/.*$ [NC] 
RewriteRule .*\.(mp4)$ http://www.mysite.com [R,NC] 

回答

2

您使用的是否定在這裏,所以你必須失去了[OR]和包括!

RewriteCond %{HTTP_USER_AGENT} !(Android|iPod|iPhone|iPad) [NC] 

你的規則正在做的是重定向當它不是正確的引用者,也不是移動用戶代理。你有什麼之前:

RewriteCond %{HTTP_REFERER} !^http://(direct\.|www\.)?mysite\.com/.*$ [NC] 
RewriteRule .*\.(mp4)$ http://www.mysite.com [R,NC] 

是說:如果引用者http://(direct\.|www\.)?mysite\.com/,然後重定向.MP4請求http://www.mysite.com。這裏的邏輯是,如果引用者是正確的,他們可以很好地到達mp4文件。

如果用戶代理是移動的,爲mp4服務,則需要按照邏輯說出推薦人是否正確,否則您需要否定整個事情。 (A or B)-> do something,至!(A or B) -> don't do something,其轉換爲:!A and !B -> don't do something

所以,你需要否定移動用戶代理進行檢查,而不是使用(這是什麼是默認重寫條件)。

+0

謝謝,我沒有注意到,它現在正在工作;)。 – Shixons

1

嘗試

RewriteCond %{HTTP_USER_AGENT} (Android|iPod|iPhone|iPad) [NC,OR] 
+0

感謝您的幫助,我使用了錯誤的語法,您的anwser只需要一個!像Jon Lin說的那樣。 – Shixons

+0

@Shixons我只是在看語法,而不是邏輯,下次更勤快。 – Musa