【发布时间】:2013-05-05 02:50:58
【问题描述】:
我在使用 geoip 阻止国家/地区时遇到问题。当我使用我的托管帐户实用程序来阻止国家/地区时,它会在 .htaccess 中创建以下脚本。问题是它似乎不起作用(添加了美国但没有被阻止)。
GeoIPEnable on
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$ [OR]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$ [OR]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CN$
RewriteRule ^.*$ - [F]
所以,我在列表中的最后一个国家/地区添加了 [OR],但现在它阻止了所有内容,包括不在列表中的国家/地区。在这里我尝试删除 US 但仍然收到 403 消息。
GeoIPEnable on
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$ [OR]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$ [OR]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CN$ [OR]
RewriteRule ^.*$ - [F]
【问题讨论】:
-
或者到列表的末尾表现得应有尽有。你是如何确认它没有工作的?
-
美国不在列表中,但我在尝试访问该站点时收到 403 禁止消息。 (我在美国)。
-
是否有尾随
[OR]? -
@PhpMyCoder 那就是列表末尾的 [OR]。当列表末尾没有 OR 时,它根本不会阻塞(添加美国进行测试)。当列表末尾带有 OR 时,它甚至会阻止不在列表中的国家(删除美国进行测试)。
-
您确定您的 IP 地址显示为位于美国吗?您可能有一个 GeoIP 无法解析的 IP(尤其是如果您的网络主机使用的免费版本不准确)。尝试将以下规则添加到您的测试设置中:
RewriteRule .* /test?code=%{ENV:GEOIP_COUNTRY_CODE} [R=temporary]并查看当您的浏览器被重定向到此假路径时您在查询字符串中获得的代码值。如果您在地址栏中没有看到code=US,那么您的 IP 不会在您的 Web 主机上的 GeoIP 下解析为“美国”。
标签: .htaccess mod-rewrite geoip