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

Kentico/ASP.NET ResponseRedirect后404跳转URL未变更问题排查

解决ASP.NET 404跳转后URL不更新的问题

嗨,我看你已经配置了<customErrors>,但遇到了URL没跳转的问题——这其实是ASP.NET和IIS错误处理优先级的小坑,咱们来搞定它:

先看你当前的配置代码:

<customErrors mode="RemoteOnly" redirectMode="ResponseRedirect" defaultRedirect="~/SpecialPages/PageNotFound.aspx">
  <error statusCode="404" redirect="~/SpecialPages/PageNotFound.aspx" responseMode="Redirect"/>
</customErrors>

你设置的redirectMode="ResponseRedirect"和responseMode="Redirect"理论上应该触发URL跳转,但问题大概率出在IIS的原生错误处理优先级更高,把ASP.NET的customErrors给覆盖了。咱们做两个关键调整:

1. 让ASP.NET接管错误响应

在web.config的<system.webServer>节点里加上这段配置,告诉IIS不要用自己的错误页覆盖ASP.NET的处理结果:

<system.webServer>
  <httpErrors existingResponse="PassThrough" />
</system.webServer>

这个配置的作用是让IIS“放行”ASP.NET已经处理好的错误响应,而不是强行替换成IIS自带的404页面。

2. 检查IIS管理器的错误页设置

如果加了上面的配置还是没效果,去IIS里手动确认一下:

  • 打开你的站点,找到“错误页”功能
  • 找到404状态码对应的条目,双击进去
  • 把“响应类型”改成重定向,目标URL填写/SpecialPages/PageNotFound.aspx(注意这里用根路径,不要带~)
  • 保存设置后重启站点试试

另外还要注意两个小细节:

  • 确认~/SpecialPages/PageNotFound.aspx这个路径完全正确,没有拼写错误,而且直接访问这个地址能正常打开
  • 如果你的站点是部署在IIS 7.5及以上版本,这个方案应该100%生效

现在再测试访问mysite.com/gibberish,应该就能看到URL跳转到mysite.com/SpecialPages/PageNotFound.aspx,同时显示你的自定义404页面啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:58:47