如何替换重写条件中的 IP 字段

如何替换重写条件中的 IP 字段

.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文件中?

答案1

Apache 是无状态的,对于 .htaccess 文件来说更是如此。这意味着您可以即时添加任何指令。您可以创建一个 cron 脚本并让它每分钟运行一次,让您的脚本运行您的 'w -h | awk '{print $3}' | head -1' 并以正确的指令语法“RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx”将相关信息插入到 .htaccess 文件中。

由于 apache 是无状态的,它会为 .htaccess 中或以下的任何目录的每个请求读取 .htaccess 文件,因此您的指令将立即生效,无需重新启动 apache。

答案2

我找到了解决方案。如果有人需要的话,那就是:

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

相关内容