Apache 410没有使用mod_alias也没有mod_rewrite

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

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

这工作:

 Redirect 302 /somewhere /gone 

但是这不是:

 Redirect 410 /somewhere 

该行被忽略(就像它已被评论),并且该请求落在其他规则(将其引导到不相关的通用error handling脚本)上。

同样,试图使用带有[G]标志的RewriteRule不起作用,但是同样的规则重写到生成410的脚本也是如此 – 所以规则不是问题,而是相当于410 /走了不行,

我可以通过发送410的脚本来解决这个问题,但是这很烦人,我不明白为什么它不工作。

有任何想法吗?

在cPanel中似乎有一个bug,它需要一个显式的ErrorDocument来使410生效。

所以,解决方法是将以下内容添加到.htaccess中:

 ErrorDocument 410 default 

这然后使[G]为RewriteRule工作。 (还没有validationredirect也是固定的。)

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

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