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

使用.htaccess实现404重定向并捕获请求路径

实现全站404重定向并捕获请求路径的.htaccess配置

没问题,这就给你一份直接可用的配置,完美匹配你的需求!下面分两种方案,你可以根据自己的情况选择:

方案一:使用URL重写(推荐,更灵活)

这种方案能精准控制传递的路径格式,还能避免误重定向存在的文件/目录:

# 启用URL重写引擎(确保服务器已开启mod_rewrite模块)
RewriteEngine On

# 仅当请求的文件或目录不存在时才执行重定向
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 将请求路径(去掉开头斜杠)传递给error.php的e参数,临时重定向
RewriteRule ^(.*)$ /error.php?e=$1 [L,R=302]

关键说明:

  • RewriteEngine On:必须开启,这是重写规则生效的前提,绝大多数主机默认都已启用mod_rewrite,要是遇到问题可以联系主机商确认。
  • 两条RewriteCond:核心作用是只对不存在的文件/目录触发重定向,避免把正常能访问的页面也跳转到错误页,比如你的首页index.php或者存在的图片/css文件都不会被影响。
  • RewriteRule ^(.*)$ /error.php?e=$1:^(.*)$会捕获用户请求的完整路径(比如xxx/yyy),$1就是捕获到的内容,最终拼接成error.php?e=xxx/yyy。
  • [L,R=302]:L表示处理完这条规则就停止,不会再执行后续规则;R=302是临时重定向,测试阶段用这个更稳妥,等确认所有功能正常后,可以改成R=301(永久重定向)。

方案二:使用ErrorDocument(更简单,无需重写引擎)

如果你不需要处理路径开头的斜杠,这个方案更简洁,不需要开启重写模块:

# 直接将404请求指向error.php,传递原始请求路径(包含开头斜杠)
ErrorDocument 404 /error.php?e=%{REQUEST_URI}

这种方式下,用户访问/xxx会跳转到/error.php?e=/xxx,参数里多了个开头的斜杠,如果你能在error.php里处理这个(比如用trim($_GET['e'], '/')去掉),这个方案完全可用。

额外提示:

  • 确保你的.htaccess文件放在网站根目录,这样才能全站生效。
  • 如果error.php不在根目录,要调整路径,比如在/assets/error.php,就把配置里的路径改成/assets/error.php。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:25:01