2012-08-31 18 views
0

我正在嘗試編寫一個PHP擴展,用於執行特定請求的某些操作。如何讓PHP通過Apache指令處理不存在的文件請求?

問題是,即使正確設置了處理程序讓PHP運行,除非請求URL被映射到現有文件上,它只是顯示'未找到'錯誤頁面,跳過擴展代碼。儘管這可能聽起來像是PHP的假使用,但我確實希望PHP能夠運行,無論PHP腳本是否存在於服務器中。

是否有一個指令,我可以用來壓制'Not Found'錯誤頁面給定的正則表達式匹配,而不使用重定向?如果沒有,我怎麼能使用重定向來實現這一點?

回答

1

也許你可以使用ErrorDocument指令。
但是,你必須處理所有的404條件。最初請求的路徑是$ _SERVER數組中的某處。所以你可以在php腳本中使用你的正則表達式。

編輯:原始路徑存儲在$_SERVER['REQUEST_URI']
而php腳本可以發送任何http狀態碼,404,301,200就是它所要的;雖然我不知道在apache 2.4中新的層疊定義thingy會發生什麼......

+0

問題是,沒有PHP腳本。我想要運行的代碼在PHP擴展中,並且我非常確定它沒有運行於不映射到服務器上的文件的請求。 – ravemir

+0

但是,創建一個「虛擬」PHP腳本是一個問題嗎?否則它將無法訪問,即不必「公開」該腳本文件 - 只需將其添加到ErrorDocument處理程序即可。 – VolkerK

+0

創建一個腳本沒有問題,但是當URL可以採用多種形式時,如果我希望我的PHP擴展能夠處理所有這些腳本,那麼每次都必須創建一個虛擬對象,所以它不是一個選項。 – ravemir

相關問題