前言
有时候需要定向屏蔽网站的某些目录,如果从源站设置,还是相对麻烦的,尤其是进行了缓存之后,某些插件控制会无效,或者影响缓存效果。
此时可以考虑使用nginx或者cloudflarecdn来解决这个问题
NGINX配置拦截
如果你使用宝塔面板,若没有用反向代理,则直接在当前网站的配置文件编辑即可,若有用反向代理,则在反向代理的配置细则里面加即可,如果有开伪静态,也可以在那里改。
其实这个我去年就写过类似的网站 NGINX 在特定路径指定目标进行重定向操作:以独角数卡拦截中国大陆IP购买为例
可以通过 if ( $http_cf_ipcountry = “CN”) 来识别CF传来的IP
当然,如果你这个是最外层的NGINX了,没有套CDN,也可以用 Nginx + Ip2location 或GeoIP 的方法来识别来源IP
原理很简单,直接举例,照着改就行了
location /202209/6513.html { #return 403; return 302 https://96110.pages.dev/ChinaTelecom/CT; }
比如这个,拦截特定URL,用302跳转到其他URL,或者直接403、500等状态码
注,可能需要学习 NGINX Location的相关知识,比如通配符,可阅读 https://blog.csdn.net/jy02149522/article/details/79066574
该方案可以部署在反代机器、中转机器上,CDN前后均可,更适合在CDN前面。
如果是有防盗链等情形,也可以参考我早期的文章
- 自建基于Github仓库的图床的反代解决方案:限制用户名+多用户+分级缓存+分时缓存+防盗链+分级缓存+盗链跳转指定地址
- NGINX 反代 AdGuard Home 的DOH的最佳解决方案
- NGINX
- 反代
CloudFlare CDN配置拦截
CF CDN相关的链接还可以在博客内自行阅读,比如这两个Tag
目前CF有一个Beta中的批量重定向功能,可以实现这个方案。当然,远古的页面规则(已分离)、转换规则、WAF防火墙规则(不支持转发)也有类似的效果。
这个是以账号为单位而不是域名
规则写法和WAF差不多,比如要BAN中国和中转机
当然,也要提前准备好转发列表,支持CSV上传
这里可以填写进出2个URL,4种状态码,查询字符串、子域、子路径匹配、保留路径后缀等参数
比如把这个URL直接转发到反诈页面,从而实现按需求拦截。而且这个不会受到CF CDN缓存的影响,如果你在源站弄,则可能因为直接读缓存而没有效果。