近日再做htaccess,發現自己也遺忘了許多,本文不會做多高深的討論htaccess能做甚麼,只是簡單的再說明一下,htaccess裡面 Order allow,deny的邏輯思維。 首先在httpd.conf中,要先把AllowOverride設成all(或你想要的權限),這樣htaccess才有權力去做細部管理。 大家都知道.htaccess可以細部調節網站內每個目錄的細部權限,其中有一個很受歡迎的做法,就是Block IP 或 Block Region。一般做法像這樣.. order allow,deny deny from 123.123.123.123 allow from all 意思是允許所有人訪問,除了123.123.123.123的訪問。 所以當有一個來自111.123.111.112的 IP 訪問網站,他會匹配到 allow from all ,並且沒deny,予以通行。 其實 .htaccess裡面 共沒有上下順序這東西,allow與deny的順序是由order來決定,而後者會比前者的權限來的高(觀念上是這樣啦),所以如果有一個訪問附合allow與deny兩條rule,以上面的order來說,最後會跑deny的rule。 例: order deny,allow deny from 192.168.100.0/24 allow from 192.168.100.100 這例子有點古怪,不過可以表達我的邏輯。如果有一個訪問是從192.168.100.100過來,他會匹配到deny from 192.168.100.0/24和allow from 192.168.100.100兩條rule,他會先檢查deny, 禁止訪問,再檢查allow,予以通行,即192.168.100.100最後是可以訪問的。而另外還有一個210.47.84.234的外部IP來訪問的話,他到底匹配了甚麼呢? 答案是兩條都不匹配,結果會是...予以通行。 因為如果deny與allow都不匹配的話,會以order的最後順序來決定訪問權,即是上例的allow。 好,到目前為止應該尚算清楚。以下是一條我實際操作過的疑團(本身沒那麼謎的,是搞神秘而已) order deny,allow deny from 192.168.100....