编辑:Cron 很好,我忘了转RewriteEngine On
,把这个留在这里,以防其他人想做同样的事情,因为我在任何地方都找不到指南。
自从我使用 Apache 以来已经有一段时间了,所以这可能只是一个语法问题。我正在尝试将所有tor用户重定向到我域 ( ) 上的特定页面,/tor.php
以通知他们我们正在运行隐藏服务并且他们需要通过隐藏服务访问该站点。
由于隐藏服务将显示%{REMOTE_ADDR}
为 127.0.0.1,我想我可以每天在 cron 上抓取一次 tor IP 列表,将其放入并附sed
加到我的.htaccess
. 到目前为止,这是我想出的:
#!/bin/bash
#
# Cron job to get a list of TOR IP addresses and redirect to tor.php
sed -in '/#\ TOR-REDIRECT-BLOCK/,/#\ END-TOR-REDIRECT-BLOCK/d' /path/to/www/.htaccess
wget -q https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=my.server.ip.address -O - | sed '/^\#/d' | sed "s/^/RewriteCond %{REMOTE_ADDR} ^/g; s/\./\\\./g; s/$/\$ \[OR\] /g; 1i# TOR-REDIRECT-BLOCK" >> /path/to/www/.htaccess
echo "RewriteCond %{REMOTE_ADDR} ^0\.0\.0\.0$" >> /path/to/www/.htaccess
echo "RewriteCond %{REQUEST_URI} !^/tor.php$" >> /path/to/www/.htaccess
echo "RewriteCond %{REQUEST_URI} !^/tor.css$" >> /path/to/www/.htaccess
echo "RewriteRule ^(.*)$ /tor.php [R,L]" >> /path/to/www/.htaccess
echo "# END-TOR-REDIRECT-BLOCK" >> /path/to/www/.htaccess
# TOR-REDIRECT-BLOCK
这将删除包含在和之间的旧块,# END-TOR-REDIRECT-BLOCK
并基于 IP 列表添加一个新块,如下所示:
# TOR-REDIRECT-BLOCK
RewriteCond %{REMOTE_ADDR} ^103\.4\.16\.118$ [OR]
RewriteCond %{REMOTE_ADDR} ^106\.187\.36\.183$ [OR]
RewriteCond %{REMOTE_ADDR} ^106\.187\.36\.240$ [OR]
RewriteCond %{REMOTE_ADDR} ^106\.187\.37\.158$ [OR]
...
RewriteCond %{REMOTE_ADDR} ^99\.230\.106\.155$ [OR]
RewriteCond %{REMOTE_ADDR} ^0\.0\.0\.0$
RewriteCond %{REQUEST_URI} !^/tor.php$
RewriteCond %{REQUEST_URI} !^/tor.css$
RewriteRule ^(.*)$ /tor.php [R,L]
# END-TOR-REDIRECT-BLOCK
在此之后,我加载 Tor 浏览器并尝试导航到http://mydomain/phpinfo.php
(这是受 Apache 密码保护的,因此该文件不会暴露)。它加载phpinfo.php
而不是将我重定向到tor.php
. REMOTE_ADDR
in位于应该重定向的文件中的phpinfo.php
IP 地址列表中。.htaccess
我已经mod_rewrite
启用,所以这不是问题。0.0.0.0
规则在那里,因为我的-foosed
不足以记住如何将 附加[OR]
到除最后一行之外的所有行。任何帮助深表感谢。