我希望所有丢失网页的网址都转发到我的根页{404}页面404error.aspx
到目前为止,只有.aspx
的网址才有效。例如,如果您输入4error.aspx
,您将被重定向到错误页面。
/404error.aspx?aspxerrorpath=/4error.aspx
我不是.NET开发人员,所以我接手了这个使用经典.aspx
的项目。因此,我没有使用任何Microsoft产品在模板或框架中构建任何此类产品。我只是在Sublime文本中编码。
我查看了我在Google上发现的很多文章,但没有任何实际工作的完整示例。
这是我在web.config
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
</configuration>
我也从微软发现这个例子(404error.aspx是我的修改)
http://msdn.microsoft.com/en-us/library/vstudio/bb397417%28v=vs.100%29.aspx
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true" />
<!-- Turn on Custom Errors -->
<customErrors mode="On"
defaultRedirect="/404error.aspx">
<error statusCode="404" redirect="/404Error.aspx"/>
</customErrors>
</system.web>
</configuration>
这也没有处理没有.aspx
然后我从
尝试了这个例子<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
<error statusCode="404" redirect="~/404error.aspx" />
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
<system.webServer>
<httpErrors>
<remove statusCode="401" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<!-- full url when responsemode is Redirect -->
<error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
<!-- local relative path when responsemode is ExecuteURL -->
<error statusCode="403" path="~/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="404" path="~/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="500" path="~/404error.aspx" responseMode="ExecuteURL" />
</httpErrors>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
显然我必须更改404以外页面的路径,但我只是想测试它们的错误。最后web.config
工作得更糟。
你能告诉我需要修改的内容吗?我会很感激一个完整的<configuration>
,因为我一直很困惑。
我读过许多开发人员建议将其设为HTML页面。现在我的页面是404.html
这是我更新的web.config
<configuration>
<system.web>
<customErrors mode="On"
redirectMode="ResponseRewrite">
<error statusCode="404"
redirect="~/404.html"/>
</customErrors>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="en-US"
uiCulture="de-DE"
/>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom"
defaultResponseMode="File">
<remove statusCode="404"/>
<error statusCode="404"
path="~/404.html"/>
</httpErrors>
</system.webServer>
</configuration>
答案 0 :(得分:8)
您需要配置<httpErrors>
元素。这会为静态文件和服务器页面配置错误页面。
您的第三次尝试“web.config(3)”和“编辑1”几乎 。问题是你不能在这里使用app-relative路径(例如:“〜/ 404.html”),它们必须是站点根目录的相对路径(例如:“/404.html”)。
<?xml version="1.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" />
<!-- full url when responsemode is Redirect -->
<error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
<!-- local relative path when responsemode is ExecuteURL -->
<error statusCode="403" path="/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="404" path="/404error.aspx" responseMode="ExecuteURL" />
<error statusCode="500" path="/404error.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
答案 1 :(得分:-1)
示例customErrors部分中的设置会导致任何未处理的HTTP 404(找不到文件)错误被定向到Http404ErrorPage.aspx文件。如果请求.aspx文件,.asmx文件等,并且所请求的文件不存在,则会发生这些HTTP 404错误。 ASP.NET文件中的所有其他未处理错误都将定向到DefaultRedirectErrorPage.aspx文件。
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true" />
<!-- Turn on Custom Errors -->
<customErrors mode="On"
defaultRedirect="DefaultRedirectErrorPage.aspx">
<error statusCode="404" redirect="Http404ErrorPage.aspx"/>
</customErrors>
</system.web>
</configuration>
<强> NoteNote:强> 在该示例中,mode属性设置为“On”,以便在Visual Studio中运行示例时可以显示错误消息。在生产环境中,此设置通常为“RemoteOnly”。然后,ASP.NET将错误页面呈现给外部用户。如果在服务器计算机(localhost)上发出请求,ASP.NET将呈现包含详细错误信息的页面。