对于404重定向,我使用了以下代码:
try
{
HttpContext.Current.Response.Redirect(url, true);
}
catch (System.Threading.ThreadAbortException)
{ }
此重定向的问题是该页面被重定向到404页面并且在那里 404页面代码后面,我将Http状态设置为404.因此,当在浏览器中给出一个不存在的URL时,首先接收一个Http状态302,然后接收一个Http状态400.
要求是省略此Http状态302.我尝试了一些替代方案,然后我实现了如下:
HttpContext.Current.Response.Redirect(url, false);
if (url.Contains("404.aspx"))
{
HttpContext.Current.Response.StatusCode = 404;
}
HttpContext.Current.ApplicationInstance.CompleteRequest();
现在,错误页面重定向和Http状态代码404是正确的,但在浏览器url字符串中,错误的URL仍然存在。我期待有url {hostname} /404.aspx,但我仍然在浏览器中看到错误的url但显示404.aspx。因此,它就像一个Server.Redirect。
这是预期的行为吗?如何强制浏览器在URL字符串上显示404.aspx但仍然只返回没有Http状态302的Http状态404?
感谢名单
答案 0 :(得分:0)
我认为你已经是正确的了。用户请求http://site/MissingPage.aspx
,您的服务器无法找到该页面并返回状态404并带有自定义的HTML错误消息。他们的浏览器仍应显示http://site/MissingPage.aspx
,否则他们将如何知道坏网址是什么?他们现在也可以轻松纠正任何拼写错误。
您可以看到其他网站如何实施自定义404网页: