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

Pet*_*ton 1 mod-rewrite mod-alias apache-2.2

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

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

这有效:

Redirect 302 /somewhere /gone
Run Code Online (Sandbox Code Playgroud)

但这不会:

Redirect 410 /somewhere
Run Code Online (Sandbox Code Playgroud)

该行将被忽略(就像它已被注释一样)并且请求会落入其他规则(将其定向到不相关的通用错误处理脚本)。

类似地,尝试使用带有 [G] 标志的 RewriteRule 不起作用,但是将相同的规则重写为生成 410 的脚本可以 - 所以规则不是问题,它似乎是关于 410/没有表现。

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

有任何想法吗?

Pet*_*ton 6

cPanel 中似乎存在一个错误 - 它需要一个显式的 ErrorDocument 才能使 410 生效。

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

ErrorDocument 410 default
Run Code Online (Sandbox Code Playgroud)

然后,这使 [G] 能够为 RewriteRule 工作。(尚未验证重定向是否也已修复。)

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