如何让带.php后缀的URL返回“未找到对象”错误?
PHP站点拦截带.php后缀访问请求的配置方案
根据你使用的服务器环境,选择对应规则添加到现有配置即可:
Apache 环境
修改站点根目录下的 .htaccess 文件,在你已配置的无后缀访问规则之前添加以下内容:
# 拦截所有直接带.php后缀的访问请求,返回404 RewriteCond %{THE_REQUEST} \.php[\s?] [NC] RewriteRule ^ - [R=404,L]
规则说明:
- 匹配原始请求头中的
.php字符,不会和你已配置的「无后缀内部重写为.php」逻辑冲突 [NC]表示不区分大小写匹配[R=404]直接返回404未找到对象状态码[L]表示匹配到规则后停止后续规则执行
配置完成后重启Apache服务生效。
Nginx 环境
修改站点对应的Nginx配置文件,在server块的无后缀访问规则之前添加以下内容:
# 拦截所有带.php后缀的直接访问请求 if ($request_uri ~ \.php($|\?)) { return 404; }
规则说明:
- 匹配请求URI中包含
.php的请求,覆盖直接结尾、带参数两种场景 - 使用
$request_uri匹配不会影响内部无后缀转.php的重写逻辑
配置完成后执行 nginx -s reload 重载配置即可生效。
注意事项
- 配置前请备份原有配置文件,避免规则冲突导致站点访问异常
- 测试前清理浏览器缓存,避免历史永久重定向缓存影响测试结果
内容的提问来源于stack exchange,提问作者Daniel Don
相关产品推荐
相关产品推荐

