Iis 7 web.config自定义httpErrors未重定向&引用;由于发生内部服务器错误,无法显示该页面。”;相反

Iis 7 web.config自定义httpErrors未重定向&引用;由于发生内部服务器错误,无法显示该页面。”;相反,iis-7,web-config,http-status-code-404,http-error,Iis 7,Web Config,Http Status Code 404,Http Error,我试图让自定义错误页面工作,但没有用。这个配置是根据我在网上找到的示例改编的。使用GoDaddy托管的IIS 7.0 下面的代码告诉我“由于发生内部服务器错误,无法显示页面。”而不是重定向 <configuration> <system.webServer> <httpErrors> <remove statusCode="401" subStatusCode="-1" /> <r

我试图让自定义错误页面工作,但没有用。这个配置是根据我在网上找到的示例改编的。使用GoDaddy托管的IIS 7.0

下面的代码告诉我“由于发生内部服务器错误,无法显示页面。”而不是重定向

<configuration>  
    <system.webServer>

        <httpErrors>
        <remove statusCode="401" subStatusCode="-1" />
        <remove statusCode="403" subStatusCode="-1" />      
        <remove statusCode="404" subStatusCode="-1" />                
        <remove statusCode="500" subStatusCode="-1" />
        <error statusCode="401" path="http://www.mywebsite.com/error.html" responseMode="Redirect" />
        <error statusCode="403" path="http://www.mywebsite.com/error.html" responseMode="Redirect" />
        <error statusCode="404" path="http://www.mywebsite.com/error.html" responseMode="Redirect" />                
        <error statusCode="500" path="http://www.mywebsite.com/error.html" responseMode="Redirect" />
      </httpErrors>

    </system.webServer>

     <system.web>
        <customErrors mode="On"/>
    </system.web>

</configuration>

此问题有时会发生在共享托管计划上。见最后一篇文章:

“您不能在404错误页面之外修改Windows共享主机计划上的HTTP错误页面,这就是您遇到问题的原因”

所以,如果你有这样的东西:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <clear />
  <error statusCode="400" responseMode="Redirect" path="/Errors/404error.html" />
  <error statusCode="403" responseMode="Redirect" path="/Errors/404error.html" />
  <error statusCode="404" responseMode="Redirect" path="/Errors/404error.html" />
  <error statusCode="500" responseMode="Redirect" path="/Errors/404error.html" />
</httpErrors>

您将收到错误“由于发生内部服务器错误,无法显示页面”。但如果将其更改为:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <error statusCode="404" responseMode="Redirect" path="\Errors\404error.html"/>            
</httpErrors>

它会起作用的

关于为什么会在GoDaddy上发生这种情况的完整讨论可以在以下旧论坛帖子中找到:


您的自定义错误可能不起作用还有很多其他问题,但这个问题似乎没有很好的文档记录,所以我想我会将它发布在这里供其他人参考。

这个问题有时会发生在共享托管计划上。见最后一篇文章:

“您不能在404错误页面之外修改Windows共享主机计划上的HTTP错误页面,这就是您遇到问题的原因”

所以,如果你有这样的东西:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <clear />
  <error statusCode="400" responseMode="Redirect" path="/Errors/404error.html" />
  <error statusCode="403" responseMode="Redirect" path="/Errors/404error.html" />
  <error statusCode="404" responseMode="Redirect" path="/Errors/404error.html" />
  <error statusCode="500" responseMode="Redirect" path="/Errors/404error.html" />
</httpErrors>

您将收到错误“由于发生内部服务器错误,无法显示页面”。但如果将其更改为:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <error statusCode="404" responseMode="Redirect" path="\Errors\404error.html"/>            
</httpErrors>

它会起作用的

关于为什么会在GoDaddy上发生这种情况的完整讨论可以在以下旧论坛帖子中找到:

还有很多其他的问题,为什么你的自定义错误可能不起作用,但是这个问题似乎没有很好的文档记录,所以我想我应该把它发布在这里给其他人