拒绝或允许国家与Apache .htaccess
介绍
以下脚本使用blogama.org IP地理位置API自动生成Apache .htaccess文件以拒绝或允许特定国家/地区。 您可以将此脚本放在crontab下,并自动更新.htaccess规则。 此外,它可以更新多个.htaccess文件。
资料来源: http : //blogama.org拒绝还是允许?
首先,您需要了解这两个规则在.htaccess文件中的含义。 如果在“美国,加州”(美国和加拿大)的国家/地区的脚本中设置“拒绝”,则美国或加拿大的所有流量将被阻止。 另一方面,如果您设置“允许”,则只接受来自这两个国家的流量,所有其他国家都被阻止。
国家代码
您需要知道要拒绝/允许的ISO国家/地区代码。 列表在这里可用。
没有自动脚本的用法
去:
http://blogama.org/country_query.php?country=CA,US&output=htaccess_deny
哪个国家是列表或国家,它们之间的逗号和输出是htaccess_deny
或htaccess_allow
。
脚本如何工作?
您将必须创建一个文本文件,其中包含希望使用脚本更新的所有.htaccess文件(具有完整路径)。 如果您的.htaccess文件中有其他信息,它们将仍然保留在该位置,脚本将仅更新标签“#COUNTRY_BLOCK_START”和“#COUNTRY_BLOCK_END”之间的部分。
在开始脚本之前
创建一个名为htaccessfile.txt
的文本文件(在脚本的WORKDIR中,见下文)。 在该文件中,放置要更新的所有(现有的).htaccess文件。 例如:
/var/www/example.com/.htaccess
/var/www/mydomain.com/.htaccess
脚本配置
在脚本之上,您可以找到本节。 如果需要,您需要修改这些变量:
###MODIFY THIS SECTION### WORKDIR="/root/" HTACCESSFILE="htaccessfile.txt" HTACCESSBLOCK="htaccess-blocklist.txt" TEMPFILE="htaccess.temp" COUNTRIES="US,CA" TYPE="allow" #########################
WORKDIR
:是脚本所在的可写目录。
HTACCESSFILE
:是您将放置.htaccess路径的文件。
HTACCESSBLOCK
和TEMPFILE
:是脚本执行结束时将被删除的临时文件。
COUNTRIES
:是要拒绝/允许的国家/地区列表,用逗号分隔。
类型
:“允许”或“拒绝”访问这些国家。
剧本
#!/bin/bash ###BLOGAMA.ORG### ###MODIFY THIS SECTION### WORKDIR="/root/" HTACCESSFILE="htaccessfile.txt" HTACCESSBLOCK="htaccess-blocklist.txt" TEMPFILE="htaccess.temp" COUNTRIES="US,CA" TYPE="deny" ######################### #####DO NOT MAKE MODIFICATIONS BELOW##### cd $WORKDIR #Get the file from blogama.org API wget -c --output-document=$HTACCESSBLOCK "http://blogama.org/country_query.php?country=$COUNTRIES&output=htaccess_$TYPE" for i in $( cat $WORKDIR$HTACCESSFILE ); do if [ -f $i ]; then cat $i 2>&1 | grep "COUNTRY_BLOCK_START" if [ "$?" -ne "1" ]; then #ALREADY IN HTACCESS sed '/#COUNTRY_BLOCK_START/,/#COUNTRY_BLOCK_END/d' $i > $WORKDIR$TEMPFILE cat $WORKDIR$HTACCESSBLOCK >> $WORKDIR$TEMPFILE mv $WORKDIR$TEMPFILE $i else #NOT IN HTACCESS cat $WORKDIR$HTACCESSBLOCK >> $i fi fi done rm -f $WORKDIR$HTACCESSBLOCK使其可执行:
chmod +x whatever_you_called_this_script将其添加到您的crontab中:
* * * * * /path/to/whatever_you_called_this_script >/dev/null 2>&1
注意:使用此脚本您自担风险。 如果您发现任何错误或看不到应有的功能,请发布在Blogama.org论坛的论坛 。