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

如何在.htaccess的ErrorDocument重定向中携带错误URL参数?

解决404错误页面传递原始请求URL的问题

问题原因

你之前使用带完整域名的ErrorDocument配置会触发外部重定向,Apache在这个过程中不会保留原始请求的URL路径,所以无法直接通过$1这类变量传递参数。

正确配置方案

用RewriteRule替代单纯的ErrorDocument,直接捕获不存在的请求并传递参数:

RewriteEngine On

# 匹配不存在的文件和目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 重定向到error.php,将原始路径作为url参数传递
RewriteRule ^(.*)$ /error.php?url=$1 [L,R=302]

配置说明

  • RewriteCond %{REQUEST_FILENAME} !-f:判断请求的不是真实存在的文件
  • RewriteCond %{REQUEST_FILENAME} !-d:判断请求的不是真实存在的目录
  • RewriteRule ^(.*)$ /error.php?url=$1 [L,R=302]:把匹配到的所有路径($1)作为url参数,临时重定向到error.php
    • 如果需要永久重定向,把R=302改成R=301
    • 如果不想改变URL地址(内部转发),去掉R=302只保留[L],此时error.php仍可通过$_GET['url']获取路径,但浏览器地址栏不会显示参数

替代方案(内部转发保留参数)

如果不需要在浏览器地址栏显示参数,只想在error.php中获取原始请求路径,也可以用以下配置:

ErrorDocument 404 /error.php

然后在error.php中通过$_SERVER['REQUEST_URI']直接获取原始请求的URL路径,无需额外传递参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:57:09