.htaccess HTTP_USER_AGENT无效

时间:2012-10-19 04:23:33

标签: android ios html5 .htaccess video

我遇到了.htaccess文件的问题,通常它会检查用户引用,如果是来自我的网站它允许访问流mp4文件,但现在我想允许流式传输到Android和iOS设备,我' m使用html5标签,但它不发送http_referer所以我想检查用户代理以允许mp4文件的流,这是我所拥有但它只是不起作用。

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 个答案:

答案 0 :(得分: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

因此,您需要取消移动用户代理检查,而不是 OR 使用 AND (这是重写条件的默认值)。

答案 1 :(得分:1)

尝试

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