Plesk(CentOS Linux)配置.htaccess自定义404页面对PHP路径无效问询
Plesk环境PHP后缀路径自定义404失效解决方案
问题复现场景
- 运行环境:Plesk控制面板 + CentOS Linux
- 自定义404配置路径:域名根目录
.htaccess - 已尝试配置:
- 基础错误文档配置:
RewriteEngine On RewriteBase / ErrorDocument 404 /404.php- 重定向规则配置:
RewriteEngine On RewriteRule ^404/?$ /404.php [L] - 测试结果:
- 无后缀错误URL(如
example.com/wrongurl):正常触发自定义404 .html后缀错误文件(如example.com/wrongurl.html):正常触发自定义404.php后缀错误文件(如example.com/wrongurl.php):返回Plesk默认404,规则失效
- 无后缀错误URL(如
失效原因
Plesk默认PHP运行架构下,PHP-FPM/Mod_PHP模块会优先处理所有.php后缀请求,不存在的PHP文件会直接由后端PHP服务返回默认404响应;该响应默认会被Web服务器直接透传,优先级高于.htaccess中定义的ErrorDocument规则,导致自定义配置被绕过。
解决步骤
1. 核心配置(必做)
编辑域名根目录下的.htaccess,追加以下对应模块的兼容配置:
# Mod_PHP环境兼容配置 <IfModule mod_php.c> ErrorDocument 404 /404.php </IfModule> # PHP-FPM环境核心配置 <IfModule mod_proxy_fcgi.c> ErrorDocument 404 /404.php *ProxyErrorOverride On* </IfModule>
说明:默认
ProxyErrorOverride为Off,Web服务器会直接透传后端PHP服务返回的所有错误页面;开启后会强制Apache接管所有4xx/5xx错误响应,应用自定义的错误文档规则。
2. Plesk后台配置核验
- 登录Plesk管理面板,进入对应域名的「PHP设置」页面
- 确认「错误页面」分类下的404错误指向路径与
.htaccess中定义的/404.php一致 - 保存配置后重启Web服务器(Apache/Nginx),使规则生效
3. 兜底规则(可选)
如果上述配置后仍有异常,可在.htaccess最顶部追加预捕获规则,优先校验PHP文件是否存在:
# 仅对不存在的PHP请求触发自定义404 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.*\.php$ /404.php [R=404,L]
效果验证
配置完成后测试三类请求,确认均返回自定义404页面、响应状态码为404即生效:
- 无后缀错误URL
- 非PHP后缀的错误静态文件路径
- 不存在的PHP文件路径
内容的提问来源于stack exchange,提问作者Stellan Coder
相关产品推荐
相关产品推荐

