5

我将 Apache(Debian 上的 2.2.22)配置为通过 FastCGI 处理 PHP 文件:

<FilesMatch ".+.php$">

SetHandler 应用程序/x-httpd-php

</文件匹配>

动作应用程序/x-httpd-php /fcgi-bin/php5-fpm 虚拟别名

/fcgi-bin/php5-fpm /fcgi-bin-php5-fpm FastCgiExternalServer

/fcgi-bin-php5-fpm -socket /var/run/php5-fpm.sock -idle-timeout 600 -pass-header 授权

显示自定义文件未找到 (HTTP 404) 页面在 Apache 中配置如下:

<目录“/home/http/domain/root”>

..

错误文档 404 /pagenotfound.htm

..

</目录>

使用自定义 404 pagenotfound.htm 文件回答对不存在的非 PHP 文件的请求。没问题。

但是对不存在的 PHP 文件的请求是用 http-status-header "HTTP/1.1 404 Not Found" 和内容 "File not found." 来回答的,所以不是我的自定义错误页面。问题!

Apache 错误日志显示(在后一种情况下):

[2015 年 11 月 21 日星期六 14:03:07] [错误] [客户端 xx.xxx.xx.xx] FastCGI:服务器“/fcgi-bin-php5-fpm”标准错误:主脚本未知

使用 PHP-FPM 时,如何为不存在的 PHP 文件配置自定义 404 页面?

4

2 回答 2

5

在全局服务器配置或单个虚拟主机中设置“ProxyErrorOverride on”,请参阅http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxyerroroverride

于 2016-02-26T22:04:20.810 回答
1

当显示“找不到文件”而不是不存在的 .php 文件的自定义错误页面时(所有其他不存在的文件都会获得正确的自定义错误页面)...

Centos 8、PHP 7.2.11 文件:/etc/httpd/conf.d/php.conf

在 SetHandler 之后添加“ProxyErrorOverride On”

<FilesMatch \.(php|phar)$>
    SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    ProxyErrorOverride On
</FilesMatch>

不确定是否需要,但我做了:

    systemctl restart httpd
于 2019-12-20T19:29:23.987 回答