We're migrating an existing website from IIS6 to IIS7, but are experiencing some difficulty in setting up the 404 error page. Our 404-errorpage works like this:
- A custom ASP-page checks the URL against a short list of 'special' URLs (e.g. http://example.com/limited-offers).
- If the URL is known, it redirects to the actual URL of that page.
- Otherwise the visitor is redirected to a static errorpage with a 404-statuscode.
With IIS6 this worked as advertised, but with IIS7 some things have changed. IIS7 will always display the configured errorpage when it encounters a statuscode for which an errorpage is defined. In case of our static errorpage with 404-statuscode, this means that IIS7 will execute the custom ASP-page again. This leads to infinite redirection.
We've discovered that this behavior can be circumvented by adding a setting in Web.Config
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
However, after adding this our custom ASP-page refuses to redirect. After checking with Fiddler it seems that IIS7 forces the 404 statuscode, overwriting our 302 redirect.
Can anyone recommend another approach to solve our problem?