Apache-2.2

Apache 410 Gone 指令不適用於 mod_alias 和 mod_rewrite

  • July 1, 2013

Apache 2.2(在執行 cPanel 的伺服器上)似乎忽略了返回 410 狀態的指令。

mod_alias 的 Redirect(使用410or gone)和 mod_rewrite 的 RewriteRule(使用[G])都會發生這種情況,在 .htaccess 文件中使用。

這有效:

Redirect 302 /somewhere /gone

但這不會:

Redirect 410 /somewhere

該行被忽略(好像它已被註釋)並且請求落入其他規則(將其引導到不相關的通用錯誤處理腳本)。

同樣,嘗試將 RewriteRule 與

$$ G $$flag 不起作用,但是將相同的規則重寫為生成 410 的腳本可以 - 所以規則不是問題,而是似乎是關於 410/gone 的東西沒有表現。 我可以通過發送 410 的腳本來解決它,但這很煩人,我不明白為什麼它不起作用。

有任何想法嗎?

cPanel 中似乎有一個錯誤 - 它需要一個明確的 ErrorDocument 才能使 410 生效。

因此,解決方案是將以下內容添加到 .htaccess 中:

ErrorDocument 410 default

然後,這使

$$ G $$為 RewriteRule 工作。(尚未驗證重定向是否也已修復。) 來源:http ://wordpress.org/support/topic/410-errors-returning-404-pages

你說它不起作用是什麼意思,返回什麼狀態碼?如果您使用任何第三方 apache 模組,請先嘗試禁用它們。

引用自:https://serverfault.com/questions/444986