我遇到了.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]
答案 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]