想要將 apache 的站台, 拒絕讓某個(某群ip)存取的方式, 有幾個方法, 其中最單純最俱體的方式就是直接利用 <Directory></Directory> 這個 tag 中的限制存取來操作最為單純方便 (當然, 虛擬主機可不行, 可以直接利用 .htaccess 設定該層目錄的存取權限)
一般來設, 設定如下:
<Directory "/usr/home/website1"> order deny,allow </Directory>
這樣即可. 就是判斷 deny , 預設為 allow 的條件, 也就是所謂公開站台的設定, 若有要限制某些 ip 存取, 可以這樣下:
<Directory "/usr/home/website1"> order deny,allow deny from 1.2.3.4 deny from 11.22.33. </Directory>
其中的 deny from 1.2.3.4 是限制某個單一 ip, 而 deny from 11.22.33. 是指 11.22.33.* 都是拒絕存取的, 如此一來, 便能有效管理不想讓某些 ip (例如爬蟲類或是一些吃資源的 ip, 又或是攻擊的 ip)訪問做好限制.
不過發生了一個有趣的狀況, 也就是之前設了, 發現沒有用, 在多次交叉比對檢查後, 發現是這個原因, 就是在 <VirtualHost> 內的 DocumentRoot 指定為 /home/website1 而在 <Directory> 內的目錄指向是 /usr/home/website1 , 這樣一來, apache 在存取該 website1 的檔案時, 是走 /home/website1 下的檔案, 雖然和 /usr/home/website1 一樣, 不過對 apache 來說卻是不同, 這個要特別注意才行, 否則可能會有設定好的 <Directory> 的限制 ip, 但實際上沒有作用, 原因就有可能發生在這裡了.
又或反過來說, 設定的路徑一定要一致, 而且儘量用完整路徑, 不要用簡化的 link 路徑指向檔案, 也比較容易除錯一些. 所以原則上是這樣的:
<VirtualHost *:80> ServerName test.diary.tw Document /usr/home/www/test ..... </VirtualHost> <Directory "/usr/home/www/test"> order deny,allow deny from 1.2.3.4 </Directory>
這樣就 ok 啦, 千萬要注意紅字部分要一致的這件事, 否則可能設了沒有作用, 原因就在這裡了..
另外補充一下, 若是這種方式限制存取的話, client 會拿到 403 的存取失敗代碼.



原來其實早在一月時, 就是開始超越了, 一直到後來就穩定的坐在第一名了.
是的, 工作專業歸工作專業, “轉職力” 是個什麼東東啊? 是指轉職的能力嗎? 是指可以換工作的能力? 不過我講坦白話, 換工作的能力, 有什麼用啊?! 人家看你的還是專業能力及學經歷等條件, 尤其現在這種環境的狀況, 專業都不見得有用了, 大家都要生存, 公司也要生存, “轉職”? 有條件才有得談.

接下來利用 firebug 的 networking 來觀察回送的封包, 按下 google 搜索, 得到這樣的 http request:


