You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将.php伪静态为.html后ErrorDocument 404失效问题求助

解决方案

问题出在第二条Rewrite规则未验证目标.php文件是否存在。当访问不存在的xxx.html时,规则会直接将其重写为xxx.php,服务器找不到该xxx.php文件时,会返回默认的"File not found",而非触发自定义404配置。

修改方法是在第二条Rewrite规则前添加文件存在的判断条件,仅当对应的.php文件实际存在时才执行重写:

RewriteCond %{THE_REQUEST} (.*)\.php  
RewriteRule ^(.*)\.php $1.html [R=301,L]  

# 添加判断:对应的.php文件必须存在
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteCond %{THE_REQUEST} (.*)\.html  
RewriteRule ^(.*)\.html$ $1.php [L] 

ErrorDocument 404 /404.php

说明

  • %{DOCUMENT_ROOT}/$1.php -f 用于检查服务器上是否存在$1.php文件($1匹配xxx.html中的xxx部分)。
  • 只有文件存在时,才会执行重写规则;若文件不存在,重写不触发,服务器会正常处理xxx.html的404请求,调用你配置的/404.php。

修改后,访问不存在的xxx.html时即可正常显示自定义404页面。

内容的提问来源于stack exchange,提问作者Em Hi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:25:24