如何在Nginx中拦截所有包含'author'关键词的URL?
我懂你想把所有带"author"的请求都拦下来的需求——不管它是在URL路径里,还是在问号后面的查询参数里对吧?你之前用的location ~ author规则之所以不管用,是因为它只匹配URI路径部分(也就是?前面的内容),像example.com/?author=2这种带查询参数的请求根本不会被这个location匹配到。
给你一套能覆盖所有情况的配置:
# 拦截路径中包含"author"的请求(不区分大小写) location ~* author { deny all; } # 拦截查询参数中包含"author"的请求(不区分大小写) if ($query_string ~* author) { deny all; }
几点说明:
- 用
~*是做不区分大小写的匹配,如果你只想拦截大小写完全一致的"author",把~*换成~就行。 - 把这两段配置放在你的
server块里靠前的位置,因为Nginx会优先匹配更具体的location规则,靠前放能确保拦截规则先生效。 - 修改完配置后,先执行
nginx -t检查配置是否合法,没问题再重启Nginx,避免出现服务故障。
备注:内容来源于stack exchange,提问作者charll
相关产品推荐
相关产品推荐

