Htaccess

如何在重寫條件下替換 IP 欄位

  • April 3, 2015

.htaccess文件包含以下摘錄以阻止特定文件和文件夾。

RewriteCond %{REQUEST_URI} wp-login.php|wp-admin
RewriteCond %{REMOTE_ADDR} !^123.456.789.
RewriteRule . - [R=404,L]

我需要123.456.789用我目前的 IP 替換欄位,可以從以下位置檢索:

w -h | awk '{print $3}' | head -1

如何.htaccess用目前獲取的 IP 替換文件中的 IP 欄位w並將其再次保存到.htaccess文件中?

我找到了解決方案。如果有人需要,它是:

sed -i "s/RewriteCond %{REMOTE_ADDR} \!\^[0-9,\.]*/RewriteCond %{REMOTE_ADDR} \!\^$(w -h | awk '{print $3}' | head -1)/g" .htaccess

Apache 是無狀態的,這對於 .htaccess 文件來說更是如此。這意味著您可以即時添加任何指令。您可以創建一個 cron 腳本並讓它每分鐘執行一次,讓您的腳本執行您的 ‘w -h | awk ‘{列印 $3}’ | head -1’ 並以正確的指令語法 ‘RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.’ 將相關資訊插入到 .htaccess 文件中。

由於 apache 是無狀態的,它會​​為每個對 .htaccess 中或之下的任何目錄的請求讀取該 .htaccess 文件,因此您的指令將立即生效,而無需重新啟動 apache。

引用自:https://unix.stackexchange.com/questions/194075