如果 HTTP_ORIGIN 和用户代理不是这样,.htaccess 会重定向到另一个视频

如果 HTTP_ORIGIN 和用户代理不是这样,.htaccess 会重定向到另一个视频

我希望用户仅在以下情况下访问我的视频

规则1:

HTTP_ORIGIN示例.ComHTTP_REFERERExample.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指令中删除标志即可。)

=上的前缀条件模式使其成为按字典顺序排列的字符串比较,而不是正则表达式,因此不要使用反斜杠转义特殊字符(如点)。

相关内容