Cloudways GeoIP重写规则修正:仅限英美欧用户访问WordPress站点
修复Cloudways GeoIP .htaccess访问限制规则
你的规则逻辑错误导致美国用户被误拦截,问题出在[OR]的使用上:
- 美国用户的
X-FORWARDED-COUNTRY是US,第一个条件!(GB|US)$不成立,但第二个条件!^EU$成立(美国不在欧盟大陆)。因为用了[OR],只要满足其中一个条件就会触发跳转,所以美国用户被错误拦截。
正确的逻辑应该是:当用户既不是英国(GB)/美国(US),同时也不在欧盟(EU)大陆时,才跳转至授权页面。需要把[OR]调整为逻辑与(默认规则可省略[AND]),同时优化匹配规则避免大小写或部分匹配问题:
RewriteEngine on # 仅允许英国(GB)、美国(US)、欧盟(EU)地区访问,其他地区跳转 RewriteCond %{HTTP:X-FORWARDED-COUNTRY} !^(GB|US)$ [NC] RewriteCond %{HTTP:X-FORWARDED-CONTINENT} !^EU$ [NC] RewriteRule ^(.*)$ https://example.com/licensing [L,R=302]
规则细节说明:
[NC]:忽略大小写,避免因头信息大小写不一致导致匹配失败R=302:明确使用临时重定向,防止浏览器缓存错误的重定向规则- 两个条件需同时满足才触发跳转,确保GB(欧盟+英国)、US(美国)、EU大陆其他国家的用户都能正常访问
内容的提问来源于stack exchange,提问作者ben_6970
相关产品推荐
相关产品推荐

