我有Apache(2.2.22 on Debian)配置为通过FastCGI处理PHP文件:
〈文件匹配“.+.php$"〉
设置处理程序应用程序/x-httpd-php
操作应用程序/x-httpd-php /fcgi-bin/php5-fpm虚拟别名
/fcgi-bin/php5-fpm /fcgi-bin-php5-fpm快速计算机外部服务器
/fcgi-bin-php5-fpm -套接字/var/run/php5-fpm.sock -空闲超时600 -通过报头授权
要显示自定义的“找不到文件(HTTP 404)”页,请在Apache中配置如下:
〈目录“/home/http/域/根目录”〉
..
错误文档404/页面不存在
..
对不存在的非PHP文件的请求会用自定义的404 pagenotfound.htm文件来响应。
但是对于不存在的PHP文件的请求会用http-status-header“HTTP/1.1 404 Not Found”和内容“File not found."来回答,所以不是我的自定义错误页面。问题!
Apache错误日志显示(在后一种情况下):
[Sat 2015年11月21日14:03:07] [错误] [客户端xx.xxx.xx.xx]快速CGI:服务器“/”错误:主要脚本未知
使用PHP-FPM时,如何为不存在的PHP文件配置自定义404页面?
3条答案
按热度按时间j2qf4p5b1#
在全局服务器配置或单个虚拟主机中设置“ProxyErrorOverride on”,请参见http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxyerroroverride
ruyhziif2#
当“文件未找到”显示而不是自定义错误页面不存在.php文件(和所有其他不存在的文件得到正确的自定义错误页面)...
支持PHP 7.2.11文件名:文件/etc/httpd/配置文件
在SetHandler之后添加“ProxyErrorOverride On”
不确定是否需要,但我随后这样做了:
0qx6xfy63#
选项:代理错误覆盖
如果你可以访问服务器的配置,可以使用
ProxyErrorOverride
,但是它不能在.htaccess
上下文中工作,并且会阻止PHP为所有配置的状态码输出动态响应主体(默认:400
到599
)。选项:指令(Apache 2.4+) directive (Apache 2.4+)
在调用PHP之前,让Apache检查文件是否存在:
文档:,Expression parser,重定向, Expression parser , Redirect
选项:修改_重写
ErrorDocument
可使用mod_rewrite触发:注意:确保文件
non-existent
不存在。