2012-10-19 61 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