在本地开发机器上,我下载了pdt+zend服务器,其中包括运行在windows 7上的apache 2.2.16和php 5.3.5。在我的本地站点上,我包含了一个.htaccess,其中包括404403500的错误文档。在我的php中,当用户请求一个不存在的文档时,我使用header(“http/1.0404not found”)。在我的本地服务器上,一切正常。我的自定义错误文档出现了,我很高兴。
我把所有的东西都上传到我的共享主机上,在linux服务器上运行apache 2.2.38和php 5.3.8,突然错误文档只有在它们不是来自php的情况下才能工作。
php.ini、httpd.conf或.htaccess中是否有一些设置允许apace查看来自php的错误代码,这使我的dev服务器正常工作,但不是我的共享主机?
在研究这个问题时,我看到的只是“apache在传递给php之后就看不到状态码”,在这种情况下,为什么我的dev服务器工作正常?
编辑
为了清楚起见,下面是.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

htaccess可以工作,因为如果用户导航到myhost.com/jdkslfjdls,用户将收到errors/http404.php的内容。
但是,如果用户导航到myhost.com/images/getimage.php?id=5(如果没有图像5),则用户不接收任何内容。
如果它们导航到(内部IP地址)/images/getimage.php?id=5,用户接收errors/http404.php的内容。
如果用户试图访问getimage.php,也会出现类似的问题?id=6(如果有图像6但他们没有权限)。在共享服务器上,它们会得到一个空白页或浏览器的403错误。在我的开发服务器上,他们得到了我的实际自定义403错误页面。
同样,如果我尝试访问.inc文件,403错误文档也可以在共享服务器上工作。

最佳答案

您确定服务器上使用了.htaccess文件吗?有时宿主公司不允许本地.htaccess文件覆盖全局apache设置。
但是,如果您有权访问virtualhost配置,则可能需要查看以下指令

AllowOverride All

如果你发现
AllowOverride None

试着像上面那样改变。

10-08 04:47