2

我的 .htaccess 文件有问题,通常它会检查用户引用者,如果来自我的网站,它允许访问流式 mp4 文件,但现在我想允许流式传输到 Android 和 iOS 设备,我正在使用 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]
4

2 回答 2

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, to !(A or B) -> don't do something, 翻译为: !A and !B -> don't do something.

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

于 2012-10-19T04:37:16.470 回答
1

尝试

RewriteCond %{HTTP_USER_AGENT} (Android|iPod|iPhone|iPad) [NC,OR]
于 2012-10-19T04:26:56.943 回答