如何通过.htaccess为Google站长工具中不存在的奇怪URL返回410状态码
如何通过.htaccess将这类异常404 URL返回410状态码?
嘿,这种乱拼出来的垃圾URL确实够闹心的——明显是恶意扫描器或者瞎爬的爬虫捣的鬼。要把这些压根不存在的URL直接返回410(永久删除)状态码(比404更明确地告诉搜索引擎“这玩意儿永远不会存在”),咱们用Apache的mod_rewrite在.htaccess里写几条规则就能搞定。
先分析目标URL的特征
从你给出的例子来看,这些异常URL都包含几个重复出现的“垃圾关键词”:
- 第三方域名:
plus.google.com、facebook.com(被当成子目录滥用了) - 恶意/不存在的页面:
password-reset.hmlt(注意还有拼写错误的hmlt)、register.html
而且这些词都是以子目录的形式拼接在路径里的。
方案1:基础拦截(快速生效)
直接匹配路径中包含这些关键词的URL,返回410。把下面的代码加到你的.htaccess文件顶部:
# 开启URL重写引擎 RewriteEngine On # 拦截包含第三方域名或恶意页面关键词的异常URL RewriteRule (plus\.google\.com|facebook\.com|password-reset\.hmlt|register\.html) - [R=410,L]
规则解释:
RewriteEngine On:必须开启这个才能让重写规则生效- 第一个括号里是正则匹配的关键词组,用
|分隔,.要转义成\.(因为正则里.代表任意字符) -表示不跳转到其他URL,直接返回状态码[R=410,L]:R=410指定返回410状态码,L表示这条规则匹配后就停止处理后续规则,避免冲突
方案2:更严格的匹配(避免误杀)
如果你的正常网站里可能出现这些关键词(比如某个页面的参数里带了facebook.com),可以把规则改得更严格,只匹配这些关键词作为完整子目录的情况:
RewriteEngine On # 仅匹配关键词作为完整目录段的情况(被斜杠包裹) RewriteRule /(plus\.google\.com|facebook\.com|password-reset\.hmlt|register\.html)/ - [R=410,L]
这个规则只会拦截像/plus.google.com/、/password-reset.hmlt/这种被斜杠前后包裹的目录,不会误杀正常的URL。
注意事项
- 确保你的Apache服务器已经启用了
mod_rewrite模块,如果没开的话需要联系主机商或者自己在服务器配置里开启 - 测试的时候可以先把
R=410改成R=302(临时重定向),验证规则是否正确匹配了目标URL,确认没问题再改回410 - 如果后续出现新的垃圾关键词,直接把它们加到正则的关键词组里就行
- 410状态码会让搜索引擎更快地从索引中移除这些无效URL,比404的清理效率更高
内容的提问来源于stack exchange,提问作者steros
相关产品推荐
相关产品推荐

