htaccess 允许从特定用户代理和 HTTP Referrer 下载

htaccess 允许从特定用户代理和 HTTP Referrer 下载

我希望仅当用户代理或引荐来源符合以下内容时才允许下载某些文件

这些是用户代理优酷 比特流 传播

这是 http 引用网址 www.niresh12495.com

我正在尝试以下代码但显示错误 500

RewriteCond %{HTTP_USER_AGENT} !^(*uTorrent*|*BitTorrent*|*Transmission*) [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://niresh12495.com/.*$      [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://niresh12495.com$ [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://www.niresh12495.com/.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://www.niresh12495.com$  [NC,OR]
RewriteRule ^*\.(dmg|torrent|pkg|rar|exe|zip|jpeg|jpg|gif|png|bmp|mp3|flv|swf|png|css|pdf|mpg|mp4|mov|wav|wmv|swf|css|js|iso)$ http://www.niresh12495.com [R,F,NC]

我哪里错了?

答案1

存在多个问题。

  1. 您的正则表达式中有语法错误。您使用的*类似于 shell 通配符,但在正则表达式中它具有不同的含义:它仅修改另一个字符,表示“0 次或多次出现”。您可能想要的是.*,表示“任何字符出现 0 次或多次”。但是,如果您删除起始锚标记,您甚至不需要它^

  2. 您的最后一个 RewriteCond 以一个标志结尾OR,该标志可能是无效的,因为没有其他 RewriteCond 遵循它。

  3. 我认为你的条件逻辑是错误的。你目前有

不是 (uTorrent 或 BitTorrent 或 Transmission) 或者不是 niresh12495.com 或者不是 www,.niresh12495.com

但我认为你想要

不是 (uTorrent 或 BitTorrent 或 Transmission) 也不是 niresh12495.com 也不是 www.niresh12495.com

所以我认为你想要更多类似的东西:

RewriteCond %{HTTP_USER_AGENT} !(uTorrent|BitTorrent|Transmission) [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.|)niresh12495.com(/|$) [NC]
RewriteRule .*\.(dmg|torrent|pkg|rar|exe|zip|jpeg|jpg|gif|png|bmp|mp3|flv|swf|png|css|pdf|mpg|mp4|mov|wav|wmv|swf|css|js|iso)$ http://www.niresh12495.com [R,F,NC]

相关内容