我的服务器有很多虚拟主机。现在我想迁移到 PHP-FPM(从 mod_php 迁移)。
现在我已经ErrorDocument 404 /error-httpd/404.php
在 Apache 服务器配置中了。但问题出在 PHP-FPM 上,因为当文件不存在时,代理仅返回“文件未找到”,而没有自定义 404。
对我来说不适合的一个解决方案是 ProxyErrorOverride On - 但这会抑制直接在 PHP 脚本中生成的 404 响应。
另一个不适合我的解决方案是每个 VH 中的这个:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^.+\.php$ /error-httpd/404.php
对于标准域名来说这是可以的,但是对于虚拟子域名则不行:
RewriteCond /www/sub.domain.net/%3.sub.domain.net -d
RewriteRule ^(.*)$ /www/sub.domain.net/%2/$1 [QSA,L,NE]
此后,子域中的每个脚本(没有index.php)都是404。
所以我不知道我还能尝试什么。谢谢你的提示。
编辑1
来自虚拟主机的代理配置行:
<FilesMatch \".+\.ph(p[345]?|t|tml)$\">
SetHandler \"proxy:unix:/var/run/domain.net.sock|fcgi://localhost/\"
</FilesMatch>