[g]标志用于明确告知客户端和搜索引擎某url已永久下线,直接返回http 410 gone状态码,适用于确定资源永远不再提供的情形,如彻底下架的产品页、到期作废的活动页或需静默拒绝的废弃路径,写法为rewriterule pattern - [g,l],不重定向、无额外开销、语义最精准。
![apache rewriterule 标志位 [g] 怎么用](https://img.php.cn/upload/article/001/242/473/178580504564508.png?x-oss-process=image/resize,p_40)
[G] 是 Apache mod_rewrite 中一个明确表示“资源已永久下线”的标志位,作用是让服务器对匹配的请求直接返回 HTTP 410 Gone 状态码。
什么时候该用 [G]?
它适用于你**确定某个 URL 永远不会再提供内容**的场景,比如:
- 旧版产品页面已彻底下架,不重定向、不保留、也不跳转到新页
- 临时活动页到期后主动作废(比 404 更明确地告诉搜索引擎“不是找不到,是已删除”)
- 被恶意扫描或爬虫反复请求的废弃路径,需明确拒绝并减少日志噪音
基本写法和注意事项
格式固定为:RewriteRule pattern - [G],关键点:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 目标(substitution)必须是
-(短横线),表示不替换路径,只发状态码 - 不需要加
L,但加上更稳妥([G,L]),避免后续规则干扰 - 不能和
R、P、F等冲突标志共存 - 它只影响匹配到的请求,不影响其他 URL
实用例子
屏蔽已停用的旧 API 接口:
RewriteRule ^/api/v1/legacy/.*$ - [G,L]访问 /api/v1/legacy/users 或任何以该路径开头的地址,都会立刻收到 410 响应。
和 [F]、[R=410] 的区别
[F] 返回 403 Forbidden —— 暗示“你没权限访问”,但资源可能还存在;
[R=410] 是外部重定向,浏览器地址栏会变,且多一次 HTTP 往返;
[G] 是内部响应,直接返回 410,无跳转、无重定向开销,语义最准确。










