You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Apache为特定URL返回410状态码问题求助

解决WordPress站点.htaccess中410规则不生效的问题

咱们来拆解下你遇到的问题:添加410规则后还是返回404,核心是规则的路径格式和顺序出了问题,咱们一步步调整就能解决:

1. 修正RewriteRule的路径格式

在.htaccess文件里,mod_rewrite的规则是相对当前目录的,你写的^/somepage\.asp$里开头的斜杠/是多余的,会导致规则匹配不到请求。正确写法要去掉开头的斜杠:

RewriteRule ^somepage\.asp$ - [G,NC]
  • [G]标志专门用来返回410 Gone状态码,[NC]是忽略大小写匹配,适配不同大小写的请求。

2. 调整规则的执行顺序

WordPress默认的重写规则会把所有不存在的文件/目录请求转发到index.php,如果你的410规则放在WP规则之后,请求会先被WP的规则捕获,进而返回404。所以必须把410规则放在RewriteEngine On之后、WP主规则之前。

完整的正确.htaccess配置示例

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# 先放410规则,确保优先匹配
RewriteRule ^somepage\.asp$ - [G,NC]
# 可以批量添加多个规则,比如旧分类页
# RewriteRule ^old-blog-category/.*$ - [G,NC]

# WordPress默认重写规则(保持不动)
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

关于RedirectMatch的替代写法

如果你想用RedirectMatch实现同样效果,也要注意放在WP规则之前,写法如下:

RedirectMatch gone ^/somepage\.asp$

不过更推荐用mod_rewrite的RewriteRule [G],因为和WP的规则同属一个模块,不会出现模块优先级冲突的问题。

最后别忘了修改完.htaccess后,用浏览器无痕模式测试,避免缓存干扰结果~

内容的提问来源于stack exchange,提问作者Be Kind To New Users

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:27:12