我在使用自定义 404 错误页面时遇到了麻烦。
我有一个运行 .NET 项目的域,它有自己的错误处理功能。我有一个为该域运行的 web.config,其中包含:
<customErrors mode="RemoteOnly">
<error statusCode="500" redirect="/Error"/>
<error statusCode="404" redirect="/404"/>
</customErrors>
在该域的子目录中,我通过routes.IgnoreRoute("Assets/{*pathInfo}");
在 .NET 项目中执行来忽略那里的所有路由,并且我想在该子目录中以及 Assets 的任何子目录中放置自定义 404 错误页面。子目录包含静态内容,如图像、css、js 等。
因此,在 IIS 的错误页面部分,我将重定向到绝对 URL。
该目录的 web.config 如下所示:
<system.webServer>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="http://mydomain.com/404" responseMode="Redirect" />
</httpErrors>
</system.webServer>
但是我导航到该目录下的未知 URL,但仍然看到默认的 IIS 404 页面。
我还在 IIS 中看到一条警报,内容为:
您已配置要返回的本地和远程请求的详细错误消息。选择此选项后,将不使用自定义错误配置。
customErrors mode="RemoteOnly"
这与站点中的 web.config有什么关系吗?
我试图覆盖customErrors
子目录 web.config 中的内容,但没有任何变化。
任何帮助,将不胜感激。
谢谢。
答案1
您可以尝试添加以下内容:
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/index.php" responseMode="ExecuteURL" />
</httpErrors>
在您的“web.config”文件中。
答案2
这可能有点晚了,但是您可以将以下内容放在system.webserver
web.config 的一部分中
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
感谢 Stack Overflow 上的这篇文章:https://stackoverflow.com/questions/434272/iis7-overrides-customerrors-when-setting-response-statuscode