
我在阻止 .htaccess 中的 IP 時遇到問題
我已經把
Require not ip 192.168.20.218
它可以工作,但它會阻止整個網絡,而不是阻止單一 IP。
有人可以解決這個問題嗎?
我正在使用 Ubuntu 14.04.3 LTS 在 Apache 2.4 上運行
更新:場景是這樣的,我在我的電腦上使用IP 192.168.20.218
,我試著做一個測試來阻止這個IP位址,我嘗試過:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
這應該會阻止我的訪問,但它仍然允許我訪問該頁面。如果我取出它,Require all granted
它就會阻塞整個網路。
答案1
你不能使用否定的指令本身以授權存取。如中所述文件:
指令的結果
Require
可以透過使用not
選項來否定。與其他否定授權指令一樣<RequireNone>
,當Require
指令被否定時,它只能失敗或傳回中性結果,因此可能永遠不會獨立授權請求。
您需要執行類似以下操作:
<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>
因此,您允許所有人並排除特定的 IP 位址。
<RequireAll>
顧名思義,容器要求必須滿足所有包含的指令。
答案2
我遇到了這個問題。我忘了我有一個 nginx 反向代理。進入apache的IP是來自nginx的反向代理IP。相反,我必須在包含真實 IP 的反向代理中設定自訂標頭,然後在 .htaccess 中檢查此標頭,而不是檢查 ip。