Apache-2.2
Apache 410 Gone 指令不適用於 mod_alias 和 mod_rewrite
Apache 2.2(在執行 cPanel 的伺服器上)似乎忽略了返回 410 狀態的指令。
mod_alias 的 Redirect(使用
410
orgone
)和 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 模組,請先嘗試禁用它們。