用 rewriterule 配合 [g] 标志可直接返回 http 410 gone 状态,表明资源永久下线;适用于确定永不恢复、不迁移、不替代的路径,如停售商品页、过期活动页、废弃测试接口等,写法为 rewriterule ^pattern$ - [g,l]。
![apache 中 rewriterule 怎么使用 [g] 标记返回 410 gone 表示资源已永久删除](https://img.php.cn/upload/article/001/242/473/178917475839085.jpg?x-oss-process=image/resize,p_40)
直接用 RewriteRule 配合 [G] 标志就能让匹配的 URL 立即返回 HTTP 410 Gone 状态,告诉客户端和搜索引擎“这个资源已永久下线,不是暂时找不到”。它不跳转、不重定向,响应干净明确。
什么时候该用 [G]?
核心判断标准:你确定这个 URL 对应的内容**永远不会再恢复、不迁移、不替代、也不留空页**。
- 老版本产品页、停售商品页,连归档都不做,彻底下架
- 临时运营活动页(比如“618专题”)过期后主动作废,不想留 404
- 被爬虫高频扫描的测试路径、调试接口、旧后台入口,需明确拒绝并减少日志干扰
- 因合规或安全原因必须立即切断访问的敏感路径(比 403 更强调“已不存在”)
基本写法和关键细节
格式固定,不能省略任何要素:
RewriteRule ^/old-api/v1/.*$ - [G,L]
-
Pattern(正则部分)要准确匹配你想下线的路径,支持常见正则语法,如
^/blog/2020/.*$ -
Substitution 必须是短横线
-,表示不改写路径,只发状态码 -
必须加
[G],推荐同时加[G,L]——L防止后续规则意外干预 - 不能和
[R]、[F]、[P]等冲突标志共用
[G] 和其他类似状态的区别
选对标志位才能传达准确语义:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
[F]返回 403 Forbidden:暗示“你没权限”,但资源可能还存在;不适合已删除场景 -
[R=410]是外部重定向:浏览器地址栏会变,多一次 HTTP 往返,语义弱于 [G] -
[G]是内部响应:服务器直接返回 410,无跳转、无开销,搜索引擎也更明确识别为“已移除”
实用配置示例
放在 .htaccess 或虚拟主机配置中即可生效:
# 下线整个旧版用户中心 RewriteRule ^/usercenter(/.*)?$ - [G,L] <h1>屏蔽所有 /temp/ 开头的废弃测试路径</h1><p>RewriteRule ^/temp/ - [G,L]</p><h1>针对特定文件(注意转义点号)</h1><p>RewriteRule ^/legacy/report.pdf$ - [G,L]</p>
部署后,访问对应 URL 就会直接收到 410 响应头,浏览器显示“Gone”,搜索引擎也会在后续抓取中逐步剔除该链接。










