用htaccess進行訪問控制(轉)

1. 文件訪問控制css

利用 httpd.conf 中的 Order、Files 及 FilesMatch 命令實現的訪問控制能夠知足大部分要求,可是當用戶被拒絕時,他們看到的是碩大的「403 Forbidden」,若是你不想傷害用戶的感情,就須要顯示一些別的東西,經過Rewrite就能夠實現這個特性:正則表達式

1 RewriteEngine On
2 RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$
3 RewriteCond %{REQUEST_FILENAME} !^(.+)\.js$
4 RewriteCond %{REQUEST_FILENAME} !special.zip$
5 RewriteRule ^(.+)$ /chat/ [NC]
  • 該規則將僅容許用戶請求.css, .js類型的文件,還有special.zip文件。
  • RewriteRule 後面指定了限制規則:映射到/char/目錄下處理。
  • RewriteCond 後面的「感嘆號」(!)起到了「否認」做用,它代表,對不知足後面正則表達式者應用RewriteRule規則,也就是對當前類型的文件將不該用規則。
  • RewriteCond 之間是以邏輯「與」鏈接的,也就是隻有當三個條件都不知足時才執行RewriteRule。
  • 該規則也會限制訪問.htm, .jpg等格式。
  • 該規則不能夠放在虛擬站點根目錄(/)下,不然會死循環。
  • 若是是二級目錄,如/test/,那麼傳入RewriteCond的參數是以/test/開始的,所以從(.+)得到的文件名也含有/test/,讀者必須對此多加當心。
  • 要想僅得到文件名,能夠將(.+)替換成([^/]+),而且去掉符號^,以下所示:
1 RewriteEngine On
2 RewriteCond %{REQUEST_FILENAME} !([^/]+)\.css$
3 RewriteCond %{REQUEST_FILENAME} !([^/]+)\.js$
4 RewriteRule ^(.+)$ /chat/ [NC]

2. 用 .htaccess 阻止 User-agent瀏覽器

什麼是User-agent?User-agent用於瀏覽器向服務器「自報家門」,更確切的說是全部HTTP客戶端都得用User-agent向服務器「自報家門」,以便服務器對不一樣的客戶端做出不一樣響應。好比,某站點可能須要對瀏覽器、搜索引擎crawl還有各種下載工具做出不一樣的響應。服務器就是經過所謂的User-agent進行區分的。服務器

若是你的服務器提供某些資源的下載,那麼你就必須多加當心諸如「迅雷」等下載軟件,由於它們可能把你網站資源吸乾,而且影響你的正常訪客訪問。爲此,咱們能夠利用Rewrite限制某些UA的訪問:工具

1 RewriteEngine on
2 RewriteCond %{HTTP_USER_AGENT} 2.0.50727 [NC]
3 RewriteRule . abuse.txt [L]
  • 該規則限制「迅雷」客戶端下載資源,並將下載文件重置到abuse.txt
  • HTTP_USER_AGENT是Apache的內置變量
  • 2.0.50727是迅雷User-agent的特徵字符串
  • RewriteRule後面的「點」表示「任意URI」,也就是無論請求的是什麼,都輸出abuse.txt

一般,咱們不會僅限制一個UA。利用[OR]便可實現對多個UA做出統一處理:網站

1 RewriteEngine on
2 RewriteCond %{HTTP_USER_AGENT} 2.0.50727 [NC,OR]
3 RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [NC,OR]
4 # etc..
5 RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [NC]
6 RewriteRule . abuse.txt [L]

3. 用.htaccess阻止盜鏈(hot-linking)搜索引擎

盜鏈,特別是圖片,是很是可恥的!哪怕將圖片複製到本身服務器上,也比盜用他人的圖片連接來得光彩!.net

.htaccess的Rewrite功能能夠提供很是簡單、有效的方法阻止這種可恥行爲:code

1 RewriteEngine On
2 RewriteCond %{HTTP_REFERER} !^$
3 RewriteCond %{HTTP_REFERER} !^http://(www\.)?nowamagic\.net/ [NC]
4 RewriteCond %{REQUEST_URI} !hotlink\.png [NC]
5 RewriteRule .*\.(gif|jpg|png)$ /hotlink.png [NC]

簡單解釋一下該規則的功能:htm

  • 除本站之外其餘網站都不得引用本站圖片,具體能夠理解爲:
  • 若是引用站點爲「空」或者是「本站」,或者,所引用對象是「hotlink.png」,那麼就容許訪問。
  • 再次提醒,RewriteCond之間默認的邏輯鏈接詞是邏輯「與」。
  • 這裏的難點是理解邏輯轉換,即德·摩根定律。
相關文章
相關標籤/搜索