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

.htaccess配置错误:访问不存在的.php文件无法正确跳转404求助

问题根因

你配置的ErrorDocument 404规则仅对Apache直接处理的非PHP请求生效。.php后缀的请求会优先转发给PHP解释器处理,当对应文件不存在时,PHP会返回默认的“File not found”响应,不会触发Apache层面的自定义404规则。

修复方案

调整后的完整.htaccess配置如下:

Options +FollowSymLinks 
Options -Indexes

php_value default_charset None
AddDefaultCharset utf-8

# 改为内部路径,保留404状态码,避免302跳转
ErrorDocument 404 /404

RewriteEngine On
RewriteBase /

# 裸域名跳转www
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

# HTTP跳转HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# 新增:处理.php后缀请求
# 请求.php结尾且文件不存在,直接触发404
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule \.php$ - [R=404,L]

# 可选配置:存在的.php文件访问自动跳转到无后缀路径,统一访问格式
# RewriteCond %{REQUEST_FILENAME} -f
# RewriteRule ^(.*)\.php$ /$1 [R=301,L]

# 原去.php扩展名规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

配置说明

  • 调整ErrorDocument 404为内部路径/404,避免用户访问不存在资源时出现302跳转,保留正确的404 HTTP状态码,更符合SEO规范
  • 新增的.php后缀校验规则会在PHP处理请求前先校验文件是否存在,不存在的请求直接触发Apache的自定义404规则,覆盖你遇到的异常场景
  • 可选的带后缀访问跳转规则可以统一站点访问格式,避免同一个页面同时存在带后缀和不带后缀两个访问路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:48:02