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

.htaccess中ErrorDocument 404与RewriteRule共存时失效,报500错误

.htaccess RewriteRule导致ErrorDocument 404触发500错误的解决办法

问题原因

你的配置中,当触发404错误时,请求/404.html会被Rewrite规则匹配并重写到/stores/404.html,如果该路径下的文件也不存在,就会陷入循环重写,最终服务器返回500内部错误。同时ErrorDocument指令放在<IfModule mod_rewrite.c>内部,也可能导致模块未加载时该指令失效。

修正后的配置

<IfModule mod_rewrite.c>
    RewriteEngine On 
    RewriteBase /
    # 排除404页面,避免被重写规则处理
    RewriteCond %{REQUEST_URI} !^/404\.html$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /stores/$1  [NC,L]
</IfModule>
ErrorDocument 404 /404.html

关键调整说明

  • 将ErrorDocument 404 /404.html移出<IfModule mod_rewrite.c>块,确保无论mod_rewrite模块是否加载,404错误页面配置都能生效。
  • 添加RewriteCond %{REQUEST_URI} !^/404\.html$条件,让404页面的请求跳过重写规则,直接访问根目录下的真实/404.html文件,避免循环重写。

额外检查项

  • 确认网站根目录下确实存在/404.html文件
  • 确保服务器对该文件有读取权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:20:52