在我的本地開發機器上,我下載了運行在Windows 7上的包含Apache 2.2.16和PHP 5.3.5的PDT + Zend Server。在本地站點上,我包含了一個.htaccess,其中包含404,403和403的ErrorDocuments。和500.在我的PHP中,當用戶請求一個不存在的文檔時,我使用頭(「Http/1.0 404 Not Found」)。在我的本地服務器上,一切都很好。我的自定義ErrorDocument出現,我很高興。從PHP返回Http狀態代碼到Apache?
我把所有東西上傳到我在Linux服務器上運行Apache 2.2.38和PHP 5.3.8的共享主機上,並且突然間ErrorDocuments只有在它們不是來自PHP。
在PHP.ini或httpd.conf或.htaccess中是否有一些設置允許Apace從PHP中查看錯誤代碼,這使得我的dev服務器正常工作,但不是我的共享主機?
在研究這件事時,我所看到的只是「Apache一旦傳遞給PHP就看不到狀態碼。」在這種情況下,爲什麼我的開發服務器正常工作?
編輯
爲了清楚起見,這裏的的.htaccess:
# Use PHP 5.3
Action application/x-hg-php53 /cgi-sys/php53
AddHandler application/x-hg-php53 .php
#Deny Include Files
<Files *.inc>
order deny,allow
deny from all
</files>
#Provide custom error documents
ErrorDocument 404 /Errors/Http404.php
ErrorDocument 403 /Errors/Http403.php
ErrorDocument 500 /Errors/Http500.php
,因爲如果用戶導航到myhost.com/jdkslfjdls用戶收到錯誤的內容工作的的.htaccess /Http404.php。
但是,如果用戶導航到myhost.com/images/GetImage.php?Id=5(當沒有圖像#5時),則用戶不會收到任何內容。
如果他們導航到(內部IP地址)/images/GetImage.php?Id=5,用戶將收到錯誤/ Http404.php的內容。
如果用戶嘗試訪問GetImage.php?Id = 6(當存在圖像#6但他們沒有權限時),則會出現類似問題。在共享服務器上,他們得到一個空白頁或瀏覽器的403錯誤。在我的開發服務器上,他們得到我實際的自定義403錯誤頁面。
再次,如果我嘗試訪問.inc文件,403錯誤文檔在共享服務器上工作。
自定義錯誤文檔位於何處?它需要通過Linux服務器可達,所以如果它只在你的Windows服務器上,那麼它爲什麼不顯示它 – thegaffney
它顯示當我嘗試導航到一個不存在的文件,例如http://myhost.com/ hfjdshfkdsh。它只會在我使用php的頭文件時失敗。 –
你在哪裏放頭(「Http/1.0 404 Not Found」)?在一個存在但你想要它拋出一個404代碼的文件? – thegaffney