如何通过.htaccess拦截含add_to_wishlist查询字符串的URL?
用.htaccess拦截含
add_to_wishlist参数的请求解决机器人垃圾信息问题 你的现有规则已经可以满足核心需求,不过可以根据场景做更严谨的优化,具体说明如下:
现有规则的有效性
你编写的规则:
RewriteEngine On RewriteCond %{QUERY_STRING} add_to_wishlist [NC] RewriteRule ^ - [F]
完全可以实现拦截所有查询字符串中包含add_to_wishlist的请求:
[NC]标志忽略大小写,不管参数是Add_To_Wishlist还是其他大小写变体都会被匹配[F]标志直接返回403 Forbidden状态码,阻止机器人的自动请求- 动态的商品ID不会影响匹配,只要参数名存在就会触发拦截
优化建议(精确匹配避免误拦截)
如果担心误拦截包含类似字符串的其他参数(比如custom_add_to_wishlist这类自定义参数),可以调整查询字符串的匹配规则,确保add_to_wishlist是独立的URL参数:
RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)add_to_wishlist(=|$|&) [NC] RewriteRule ^ - [F]
这个正则的逻辑:
(^|&):匹配查询字符串开头,或者参数分隔符&,确保目标参数是独立项的开始add_to_wishlist:精准匹配目标参数名(=|$|&):匹配参数值的起始符=、查询字符串结尾,或者下一个参数的分隔符&,覆盖参数带值、不带值的所有合法场景
重定向替代方案
如果不想返回403,而是要将请求重定向到指定页面(比如网站首页),可以修改规则为:
RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)add_to_wishlist(=|$|&) [NC] RewriteRule ^ /? [R=301,L]
/?表示重定向到网站首页,末尾的?会清除原请求的查询字符串R=301表示永久重定向,若需要临时重定向可改为R=302L表示停止处理后续Rewrite规则
内容的提问来源于stack exchange,提问作者Dinesh Thapa
相关产品推荐
相关产品推荐

