我们正在将一个现有的网站从IIS6迁移到IIS7,但是在设置404错误页面时遇到了一些困难。我们的404错误页面的工作方式如下:
有了IIS6,这就像广告中所说的那样有效,但是使用IIS7,一些事情已经发生了变化。当IIS7遇到定义错误页的状态代码时,它将始终显示已配置的错误页。如果出现带有404状态代码的静态错误页面,这意味着IIS7将再次执行自定义ASP-页。这将导致无限重定向。
我们发现可以通过在Web.Config中添加一个设置来规避这种行为
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>但是,在添加了这个之后,我们的自定义ASP页面拒绝重定向.在与Fiddler检查之后,IIS7似乎强制了404状态代码,覆盖了我们的302重定向。
有人能推荐另一种方法来解决我们的问题吗?
发布于 2011-05-16 12:48:59
我成功地使用了从IIS 6迁移到IIS 7的类似设置。
我通过IIS在相关站点上进行了配置,但如果对您来说更容易,可以通过web.config文件进行配置。
您可以根据应该是301、302还是404添加条件标头。
404;
Response.Status = "404 Not Found"
Response.AddHeader "Location", pagename302 (临时重定向);
Response.Status="301 Object Moved"
Response.AddHeader "Location", pagename301 (永久重定向);
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", pagenameIIS站点的应用程序池使用集成管道模式。附件是网站调试部分的设置。

发布于 2012-10-28 23:19:14
前几周,我遇到了一个类似的情况。解决方案是按照以下方式配置<httpErrors>:
<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编写),Cactushop具有“友好”的url,并使用404处理程序页面解析url和呈现产品或列出产品类别等。
发布于 2011-05-16 13:12:11
或者,您可以考虑使用IIS模块:URLRewrite。这将允许您设置自定义SEO友好URL。您可能会发现,您可能会发现,您希望看到的东西,以改善您的应用程序前进,而不是作为一个修复您现有的问题,因为可能需要一些时间来学习。
有一些关于如何使用这个工具的优秀文章、视频教程和信息。
https://stackoverflow.com/questions/6016933
复制相似问题