我希望用户仅在以下情况下访问我的视频
规则1:
HTTP_ORIGIN 是示例.Com 和 HTTP_REFERER是Example.Com/xxxxxxxx
规则 2
HTTP_用户_代理是用户代理1或者用户代理2 或者用户代理3
- 所以如果一条规则正确那么视频就会正常打开
如果两个规则都不正确,则重定向到另一个视频示例 redirect.mp4
RewriteRule ^(.*)$ http://example.com/redirect.mp4[R=302,L]
答案1
我认为您需要将其分成单独的规则块。例如,尝试以下内容:
RewriteEngine On
# Test RULE#1 and set an env var if true
RewriteCond %{HTTP:Origin} =http://example.com
RewriteCond %{HTTP_REFERER} =http://example.com/xxxxxxxx
RewriteRule ^ - [E=RULE1:1]
# Test RULE#2 and set an env var if true
RewriteCond %{HTTP_USER_AGENT} =useragent1 [OR]
RewriteCond %{HTTP_USER_AGENT} =useragent2 [OR]
RewriteCond %{HTTP_USER_AGENT} =useragent3
RewriteRule ^ - [E=RULE2:1]
# If neither rule is correct (and not already redirected) then redirect
RewriteCond %{REQUEST_URI} !^/redirect\.mp4$
RewriteCond %{ENV:RULE1} !1
RewriteCond %{ENV:RULE2} !1
RewriteRule \.mp4$ /redirect.mp4 [R,L]
我猜你只希望这适用于.mp4
视频请求?(是内部重写不是更好的选择 - 而不是重定向?在这种情况下,只需R
从最后一个RewriteRule
指令中删除标志即可。)
=
上的前缀条件模式使其成为按字典顺序排列的字符串比较,而不是正则表达式,因此不要使用反斜杠转义特殊字符(如点)。