Iis 7 为IIS7网站配置带有重定向的自定义ASP 404页面
我们正在将现有网站从IIS6迁移到IIS7,但在设置404错误页面时遇到了一些困难。我们的404 errorpage的工作原理如下:Iis 7 为IIS7网站配置带有重定向的自定义ASP 404页面,iis-7,error-handling,asp-classic,http-status-code-404,custom-error-pages,Iis 7,Error Handling,Asp Classic,Http Status Code 404,Custom Error Pages,我们正在将现有网站从IIS6迁移到IIS7,但在设置404错误页面时遇到了一些困难。我们的404 errorpage的工作原理如下: 自定义ASP页面根据“特殊”URL的短列表检查URL(例如) 如果URL已知,它将重定向到该页面的实际URL 否则,访问者将被重定向到带有404状态码的静态错误页面 对于IIS6,这就像广告宣传的那样有效,但是对于IIS7,有些事情已经改变了。当IIS7遇到定义了错误页面的状态代码时,它将始终显示配置的错误页面。如果我们的静态错误页面带有404状态码,这意味着
- 自定义ASP页面根据“特殊”URL的短列表检查URL(例如)
- 如果URL已知,它将重定向到该页面的实际URL
- 否则,访问者将被重定向到带有404状态码的静态错误页面
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
然而,在添加这个之后,我们的自定义ASP页面拒绝重定向。在与Fiddler核实后,似乎IIS7强制执行404状态码,覆盖了我们的302重定向
有人能推荐另一种方法来解决我们的问题吗?我成功地使用了一个类似的设置,它是我从IIS 6迁移到IIS 7的。 My web.config有以下部分: 302(临时再直接) 301(永久再直接) IIS站点的应用程序池使用集成管道模式。附件是站点调试部分的设置
或者,您可以查看如何使用IIS加载项模块:。这将允许您设置自定义SEO友好URL。您可能会发现,这是您希望看到的东西,以改进您的应用程序,而不是解决您现有的问题,因为这可能需要一些时间来了解
有一些优秀的文章和关于如何使用此工具的信息。前几周我遇到了一个客户的类似情况。解决方案是按如下方式配置您的
:
<httpErrors errorMode="Custom" existingResponse="Auto">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404"
prefixLanguageFilePath=""
path="/404.asp"
responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="100" />
<error statusCode="500"
subStatusCode="100"
prefixLanguageFilePath=""
path="/500-100.asp"
responseMode="ExecuteURL" />
</httpErrors>
这适用于Cactushop(用经典ASP编写),它具有“友好”url,并使用404处理程序页面解析url、呈现产品或列出产品类别等等。302page.ASP是否重定向到另一个页面?如果是的话,它有404 HTTP状态码吗?是的,很抱歉刚刚在中编辑了那个位。302或404取决于代码中正在执行的操作。这正是我们想要的,但无法使其工作。您在IIS中对网站或应用程序池有任何特殊设置吗?例如,您的应用程序池使用经典还是集成管道模式?我们使用的应用程序池是集成管道模式。这些池是在IIS创建站点时自动创建和配置的-我们没有手动更改它们。我们的应用程序池在经典管道模式下运行。我会检查一下把它改成集成是否会有所不同。谢谢你的反馈。
Response.Status = "404 Not Found"
Response.AddHeader "Location", pagename
Response.Status="301 Object Moved"
Response.AddHeader "Location", pagename
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", pagename
<httpErrors errorMode="Custom" existingResponse="Auto">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404"
prefixLanguageFilePath=""
path="/404.asp"
responseMode="ExecuteURL" />
<remove statusCode="500" subStatusCode="100" />
<error statusCode="500"
subStatusCode="100"
prefixLanguageFilePath=""
path="/500-100.asp"
responseMode="ExecuteURL" />
</httpErrors>