gpt4 book ai didi

iis-7 - 为 IIS7 网站配置带有重定向的自定义 ASP 404 页面

转载 作者:行者123 更新时间:2023-12-02 06:42:09 25 4
gpt4 key购买 nike

我们正在将现有网站从 IIS6 迁移到 IIS7,但在设置 404 错误页面时遇到了一些困难。我们的 404 错误页面是这样工作的:

  • 自定义 ASP 页面根据“特殊”URL 的简短列表(例如 http://example.com/limited-offers)检查 URL。
  • 如果 URL 已知,它会重定向到该页面的实际 URL。
  • 否则,访问者将被重定向到带有 404 状态代码的静态错误页面。

在 IIS6 中,这与宣传的一样有效,但在 IIS7 中,有些事情发生了变化。 IIS7 在遇到定义了错误页面的状态代码时,将始终显示配置的错误页面。对于我们带有 404-statuscode 的静态错误页面,这意味着 IIS7 将再次执行自定义 ASP 页面。这会导致无限重定向。

我们发现可以通过在 Web.Config 中添加设置来规避此行为

<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>

但是,在添加这个之后,我们的自定义 ASP 页面拒绝重定向。在使用 Fiddler 检查后,IIS7 似乎强制使用 404 状态码,覆盖了我们的 302 重定向。

谁能推荐另一种方法来解决我们的问题?

最佳答案

我成功地使用了从 IIS 6 迁移到 IIS 7 的类似设置。我的 web.config 有以下部分;

<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/302page.asp" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="/500page.asp" responseMode="ExecuteURL" />
<error statusCode="500" subStatusCode="100" path="/500page.asp" responseMode="ExecuteURL" />
</httpErrors>
<system.webServer>

我通过 IIS 管理器在相关站点上进行了配置,但如果对您来说更方便,您可以通过 web.config 文件进行配置。

您可以根据应该是 301、302 还是 404 添加条件 header 。

404;

Response.Status = "404 Not Found"
Response.AddHeader "Location", pagename

302(临时重定向);

Response.Status="301 Object Moved"
Response.AddHeader "Location", pagename

301(永久重定向);

Response.Status="301 Moved Permanently"
Response.AddHeader "Location", pagename

IIS 站点的应用程序池使用集成管道模式。附件是网站调试部分的设置。

settings for debugging section for site

关于iis-7 - 为 IIS7 网站配置带有重定向的自定义 ASP 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6016933/

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