Apache-2.2

如何使用格式錯誤的主機標頭使 Apache 返回 400 錯誤的自定義頁面?

  • July 1, 2012

我認為我的要求有點難以理解,所以,我試圖讓它更簡單……

當我的伺服器收到帶有格式錯誤的主機頭的請求時,我需要我的伺服器有一個自定義的 400 錯誤頁面。

我理想中想要的是ErrorDocument 400 \somepage.php

我可以通過訪問諸如 的頁面來生成 400 錯誤http:\\myserver\bla%bla,這將很好地轉到我的腳本。同樣,我可以將\somepage.php部分更改為Test textApache 將返回該文本。

但是,如果 400 錯誤是由格式錯誤的主機標頭引起的,它將適用於文本,但不適用於網頁。

在我鬆開所有頭髮之前,任何人都可以對此有所了解並給出一個可行的解決方案嗎?!(已經為此失去了很多!)。

在嘗試了很多事情之後,事實證明這是不可能的。

我在 HTTPD 的 Bug Tracker 上打開了一張票- 該票以 Won’t Fix 關閉。

他們說:

標記為 wontfix,當請求格式錯誤時,伺服器不願意進行進一步處理以從文件系統中提供自定義錯誤文件(您的錯誤頁面應該告訴您遇到遞歸 400)

在我看來,這不是很好 - 我理解這是預設操作,但是,如果使用者願意,為什麼不讓他們使用不同的頁面。

坦率地說,它應該以這種方式工作,但是,如果有人提出涉及任何其他技術(代理、重寫/類似)的答案,我將很樂意查看它並可能給出答案標記。


編輯

最後,我發現可以使用 Nginx 和自定義指令來重定向 400 個頁面。我不明白為什麼 Apache Devs 不會承認這一點,但是,Nginx 做得很好。

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