gpt4 book ai didi

ASP.NET 自定义 404

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:29:29 24 4
gpt4 key购买 nike

我有一个数据库驱动的 ASP.NET 站点,它使用单个 APSX 页面来显示所有站点页面。所以该站点的所有 URL 都采用以下格式:

/main.aspx?page=Page+Title+One

/main.aspx?page=Another+Article+Title

不幸的是,Google 已将许多不存在的 URL 编入索引,主要是截取部分查询字符串。例如:

/main.aspx?page=Page+Title or /main.aspx?page=Page

而不是正确的:

/main.aspx?page=Page+Title+One (this is indexed by Google as well of course).

我想要实现的是,如果查询字符串页面名称在我的数据库中没有匹配的条目,则强制 404 错误服务器端,首先是为了更好的用户体验,其次是为了告诉谷歌这些页面不存在。

这是我的代码,无法正常工作。我的意思是它在 IE 8 中只显示一个空白页面,在最新的 Firefox 中显示错误:

System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.StatusCode = 404;
System.Web.HttpContext.Current.Response.Status = "404 Not Found";
System.Web.HttpContext.Current.Response.End();

我在我的日志中看到了正确的 404 代码,但是我没有被重定向到我的 web.config 中指定的错误页面:

<customErrors mode="On">
<error statusCode="404" redirect="404.aspx"/>
</customErrors>

我做错了什么?

另一件让我有点担心的事情是,如果我成功地对任何在我的数据库中没有匹配项的查询字符串条目强制执行 404 错误,那不会影响 main.aspx 页面本身有效地影响我所有现有的页面还有吗?这就是我的意思:

我 404 main.aspx?page=Non-Existing-Title,但是我的 404 会影响 main.aspx 以及任何查询字符串,包括有效的查询字符串,例如 main.aspx?page=Existing-Title。

该站点在 IIS6/Win 2003 上运行。

感谢您的帮助!

约翰

最佳答案

为什么不构建搜索引擎友好的 URL - ASP.NET routing 很容易.这是另一个 quick-start用于将路由与网络表单一起使用。

因为你有数据驱动的网站,我也建议你build a site-map每天收集有效的 URL 并提交给搜索引擎。

就自定义错误而言,可能是网络服务器 (IIS6) 正在覆盖以显示其自己的自定义错误页面 - 检查 this用于在 IIS 端管理自定义错误消息。

编辑:
目前您看到的是空白 404 页面,因为您没有发送任何错误页面内容(您的代码设置状态代码然后结束响应)。您当然可以使用 IIS 端设置来设置自定义错误页面,但如果您想显示 aspx 页面,那么我建议您对错误页面 (404.aspx) 执行 Server.Transfer。在 404.aspx 中,必须将状态码设置为 404,但不要执行 Response.End 否则将无法提供错误页面内容。
最后请记住,浏览器对错误页面中的最小内容大小有一个阈值,如果内容大小小于它将显示自己的错误页面。对于 IE,404 错误的大小为 521 字节。请参阅此博客文章:http://perishablepress.com/press/2008/01/21/important-note-for-your-custom-error-pages/

关于ASP.NET 自定义 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com