前言

本设计的背景为:使用CloudFlareCDN且开启国家地区识别码传递,没有前置代理,程序为带有伪静态的PHP

本设计的目标为:主页可以正常浏览,特定路径(购买页)会被重定向走

实现结果:独角数卡

  • 中国大陆IP访问,除了/buy下的商品详情页会被强制跳转到提示页,其他主页和后端正常
  • 非中国大陆IP访问,一切正常

另外建议关闭CloudFlare的全局缓存

代码实现

独角数卡官方的NGINX伪静态规则如下

location / {  
	try_files $uri $uri/ /index.php$is_args$query_string;  
}  

根据代码理解,它是在对应路径尝试三种文件来响应

修改后代码【直接在宝塔网站的伪静态规则中加,不要直接去宝塔网站的配置文件里面加】

location /buy {
if ( $http_cf_ipcountry = "CN") {
 return 302 https://shop.blueskyxn.com/china.html;
     }

try_files /buy/$uri /buy/$uri/ /buy/index.php$is_args$query_string $uri $uri/ /index.php$is_args$query_string;

}

location / {  
	try_files $uri $uri/ /index.php$is_args$query_string;  
}  

代码讲解:在原伪静态规则上面加,优先级问题

然后需要把后面的改写一下复制上面

逻辑是判断是不是CN,是就跳转,不是就继续运行

然后tryfile的文件要修改,因为我的路径是/buy,所以要给他补上路径

如果不补,就会出现打不开或者全部被跳转等异常现象