Pet*_*ton 1 mod-rewrite mod-alias apache-2.2
Apache 2.2(在运行 cPanel 的服务器上)似乎忽略了返回 410 状态的指令。
这发生在 mod_alias 的 Redirect(使用410
或gone
)和 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 来解决它,但这很烦人,我不明白为什么它不起作用。
有任何想法吗?
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
归档时间: |
|
查看次数: |
1795 次 |
最近记录: |