在我的本地开发机器上,我下载了运行在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