.htaccess HTTP_USER_AGENT不起作用

我有问题.htaccess文件,通常它检查用户引用,如果是从我的网站,它允许访问streammp4文件,但现在我想允许streamAndroid和iOS设备,我使用html5标签,但它不会发送http_referer所以我想检查用户代理,以允许mp4文件的stream,这是我有,但它只是不起作用。

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] 

你在这里使用的否定,所以你必须失去[OR]并包括!

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

你的规则不是正确的引用者,而不是移动用户代理时,你的规则是redirect。 你之前有什么:

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

是说:如果引用者不是http://(direct\.|www\.)?mysite\.com/ ,然后将.mp4请求redirect到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

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

尝试

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