HTACCESS 403配置:如何阻止含特定字符的URL?
解决WordPress垃圾URL拦截问题
你的规则无效主要是几个语法和逻辑问题,修正方案如下:
原规则的问题
- 正则表达式错误:
^*vn/里的*是正则量词,不能直接放在开头,正确匹配查询字符串以vn/开头的写法是^vn/ - 多余的爬虫限制条件:
RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot) [NC]会让规则只对谷歌、必应机器人生效,但你需要拦截的是所有访问这类垃圾URL的请求,应该去掉这个条件 - 不必要的
REQUEST_URI判断:你的异常URL问题出在查询字符串(?后面的部分),不是请求路径,所以这个条件可以删除
修正后的规则
把以下规则放在WordPress默认的RewriteRule ^index\.php$ - [L]这一行之前(确保拦截优先于WordPress的路由处理):
RewriteEngine On # 拦截查询字符串以vn/开头的请求 RewriteCond %{QUERY_STRING} ^vn/ [NC] RewriteRule ^ - [F]
如果要拦截**任意位置包含vn/**的查询字符串,把正则改成vn/即可:
RewriteCond %{QUERY_STRING} vn/ [NC] RewriteRule ^ - [F]
补充说明
[F]标记会返回403 Forbidden状态码,直接拒绝这类请求- 确保你的
.htaccess文件在WordPress根目录,且服务器启用了mod_rewrite模块 - 如果是Nginx环境,对应的规则写法是:
if ($args ~* "^vn/") { return 403; }
内容的提问来源于stack exchange,提问作者Arnaud
相关产品推荐
相关产品推荐

