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

FallbackResource对.php后缀URL无效,如何使其生效?

解决FallbackResource对.php结尾不存在URL不生效的问题

问题原因

Apache 对以 .php 结尾的请求会优先交由 PHP 处理模块(如 mod_php、php-fpm)处理,即使对应的物理文件不存在,PHP 模块也会直接返回 404 错误,不会触发 FallbackResource 规则,这就是你的配置对非 .php URL 生效但对 .php URL 失效的核心原因。

解决方案

通过添加 Rewrite 规则拦截 .php 结尾的请求,先判断文件是否真实存在,若不存在则转发到 errordoc.php,同时保留原有规则处理其他类型请求:

RewriteEngine On

# 拦截所有.php结尾请求,仅当文件不存在时转发到errordoc.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+\.php)$ /errordoc.php [L]

# 处理其他所有不存在的URL请求
FallbackResource /errordoc.php

规则说明

  • RewriteCond %{REQUEST_FILENAME} !-f:校验当前请求对应的物理文件是否不存在
  • RewriteRule ^(.+\.php)$ /errordoc.php [L]:匹配所有 .php 结尾的URL,转发到指定文件,[L] 标记表示这是最后一条执行规则,不再处理后续规则
  • 原有 FallbackResource 继续处理非 .php 结尾的不存在URL请求

替代方案(统一处理所有请求)

如果希望用单一规则覆盖所有不存在的请求(包括 .php),可以完全用 Rewrite 规则替代 FallbackResource:

RewriteEngine On

# 检查请求的文件或目录是否均不存在
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /errordoc.php [L]

该规则会对所有不存在的文件/目录请求(无论后缀)统一转发到 errordoc.php,达到预期效果。

内容的提问来源于stack exchange,提问作者Mehul Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:09:22