Ip

Apache 2.4 將 URL 限制為某些 IP

  • April 18, 2018

我正在嘗試將特定 URL 限制為僅在特定 IP 地址之外的網路可用。當外部使用者嘗試訪問該 URL 而不是從 IP 列表中時,他應該被重定向到首頁。

這是我到目前為止沒有任何運氣的嘗試。最後一部分將所有人重定向到首頁,而不管 IP 是什麼。

<Location "/secret">
#    <If "%{REMOTE_ADDR} != -ipmatch '123.123.123.123/255.255.255.255'">
#    Redirect 303 "/secret" /
#    </If>

RewriteCond "%{REMOTE_ADDR}" "!123\.123\.123\.123"
RewriteRule .* / [R,L]

LogLevel debug rewrite:trace6
</Location>

PS:/secret URL 實際上是一個虛擬 URL,並不存在於驅動器上。

使用Order,Denyallow指定誰有權訪問您的虛擬主機或位置。

<VirtualHost *:80>
   ServerName example.net
   DocumentRoot /docroot

   <Directory "/docroot">
       Order Deny,Allow
       Deny from all
       Allow from 10.10.10.10
       Allow from 10.10.11.0/24
   </Directory>   
</VirtualHost>

當涉及到重定向時,請考慮自定義錯誤頁面。這更普遍,因為每次未經授權的訪問都會引發 403 錯誤,因此可以輕鬆評估。

我從來沒有用 apache 做過這個,但是用 nginx 使用這個策略。對於 apache,這樣的事情應該這樣做:

ErrorDocument 403 http://homepage.example.com

使用 ErrorDocument 指令配置自定義錯誤文件,該指令可用於全域、虛擬主機或目錄上下文。如果 AllowOverride 設置為 FileInfo,它可以在 .htaccess 文件中使用。(來自 apache 文件)

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