Apache-2.2

htaccess 以允許從特定使用者代理和 HTTP 引薦來源下載

  • March 7, 2014

如果只有使用者代理或推薦人與以下內容匹配,我想允許下載一些文件

這些是使用者代理uTorrent Bittorrent 傳輸

這是 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. 您的正則表達式中有語法錯誤。您使用*的類似於 shell 萬用字元,但在正則表達式中它具有不同的含義:它僅修改另一個字元,表示“0 次或多次出現”。您可能想要的是.*,意思是“任何字元出現 0 次或多次”。但是,如果您刪除 start anchor tag ,您甚至不需要它^
  2. 您的最後一個 RewriteCond 以一個OR標誌結束,這可能是無效的,因為沒有其他 RewriteCond 跟隨它。
  3. 我認為你的條件邏輯是錯誤的。你目前有

不是(uTorrent 或 BitTorrent 或傳輸)或不是 niresh12495.com 或不是 www,.niresh12495.com

但我想你想要

不是(uTorrent 或 BitTorrent 或傳輸)並且不是 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]

引用自:https://serverfault.com/questions/580547