Apache 410 Gone 指令不适用于 mod_alias 或 mod_rewrite

Apache 410 Gone 指令不适用于 mod_alias 或 mod_rewrite

Apache 2.2(在运行 cPanel 的服务器上)似乎忽略了返回 410 状态的指令。

这种情况发生在 mod_alias 的 Redirect (使用410gone) 和 mod_rewrite 的 RewriteRule (使用[G]) 中,在 .htaccess 文件内部使用。

这有效:

Redirect 302 /somewhere /gone

但事实并非如此:

Redirect 410 /somewhere

该行将被忽略(就像已被注释掉一样)并且请求将转到其他规则(将其引导至不相关的通用错误处理脚本)。

类似地,尝试使用带有 [G] 标志的 RewriteRule 不起作用,但将相同的规则重写到生成 410 的脚本中却起作用 - 因此规则不是问题,而似乎是 410/gone 出现问题。

我可以通过使用脚本发送 410 来解决这个问题,但这很烦人,而且我不明白为什么它不起作用。

有任何想法吗?

答案1

cPanel 中似乎有一个错误 - 它需要一个明确的 ErrorDocument 才能使 410 生效。

因此,解决方案是将以下内容添加到 .htaccess:

ErrorDocument 410 default

这样,[G] 便可以用于 RewriteRule。(尚未验证重定向是否也已修复。)

来源:http://wordpress.org/support/topic/410-errors-returning-404-pages

答案2

您说它不起作用是什么意思,返回的状态代码是什么?如果您正在使用任何第三方 apache 模块,请先尝试禁用它们。

相关内容