Set up custom 404 page in IIS 7 for HTML pages - iis-7

I have my website in .htm extension and the server is IIS 7. I have now design custom 404 page.
Now can anyone suggest me, how to implement custom 404 page by web.config.

I too was having the same problem with .htm pages in IIS7 (not ASP, not .NET).
I changed responseMode to File instead of ExecuteURL in <system.webServer> and everything worked:
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="File" path="error.htm" />
</httpErrors>

Use this in your web.config file:
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Errors/NotFound" />
</httpErrors>

Related

ASP.NET 404 Redirect triggered even for missing CSS/JS Resource Files

I setup a 404 redirect if a visitor lands on a missing or non-existing ASPX page. However, it's now triggering for missing CSS/JS Resource files as well.
Web.config:
<configuration>
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="404.aspx" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
But in my signin.aspx page, I've got some missing resources (non-critical and I'm planning on removing them), however because of the Resource 404, the app now redirects the visitor to the 404 page, which is not what I intended.
How can I fix this?

Custom 404 not displaying

I have a webforms project that I've made a custom 404 page for.
I've written my redirect in my web.config but it doesn't seem to be working.
Here is the code
<customErrors mode="On" redirectMode="ResponseRedirect">
<error statusCode="404" redirect="~/404.aspx"/>
</customErrors>
When I visit localhost:(port number)/about I'm taken to the about page. When I visit the same thing but spell 'about' incorrectly, I'm taken to the default 404 page
What am I missing?
Custom errors handles aspx pages. You can remove/comment your customErrors section and use httpErrors like this instead:
<system.webServer>
<httpErrors existingResponse="Replace" errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="404.aspx" responseMode="Redirect" />
</httpErrors>
</system.webServer>
Reference: HTTP Errors

How to add a default error page using httpErrors

i have successfully added a custom 404 page. what I want to do is to create another custom error page that is displayed when there is any error other than 404. e.g. 500, 403 etc.
this is what I have right now in webconfig
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="/404.aspx" responseMode="ExecuteURL"/>
</httpErrors>
Oh, my. I cannot believe I could not find a proper answer for this simple question! Nevertheless, after 2 hours of reading the docs and debugging, I found it.
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" defaultPath="/App/Error"> <!-- Do not include ~, this was my issue all long -->
<clear/> <!-- so that IIS provided error pages are skipped -->
<!-- add those which you like to provide a view of yours -->
<error path="/App/Http404" responseMode="ExecuteURL" statusCode="404"/>
<error path="/App/Http503" responseMode="ExecuteURL" statusCode="503"/>
</httpErrors>
Beaware that <httpErrors> configures IIS, while <customErrors> configures ASP.NET and some older versions of IIS (<=6?).
You can use customErrors in webconfig :
<customErrors mode="On" defaultRedirect="~/DefaultError.aspx?msg=SomeMessage">
<error statusCode="404" redirect="~/PageNotFound.html"/>
<error statusCode="403" redirect="~/AccessDenied.html"/>
</customErrors>

Asp.net custom 404 not working using Intelligencia rewriter

Web.config :
<customErrors mode="On">
<error statusCode="404" redirect="~/Page-Introuvable" />
</customErrors>
Rewriter.config :
<rewriter>
<rewrite url="~/Page-Introuvable" to="~/PageNotFound.aspx" />
</rewriter>
When typing this unexisting url :
http://example.com/qwerty.aspx
I get to see my error 404 custom page
When typing this :
http://example.com/qwerty (without .aspx)
I get server page 404 error
I'd like to know how to display my custom page in this case.
Thank you very much!
ANSWER
Added this to web.config section System.webServer :
<httpErrors errorMode="Custom">
<clear/>
<error statusCode="404" responseMode="Redirect" path="PageNotFound.aspx"/>
</httpErrors>
<customErrors> are just for extensions handled by asp.net (aspx, ashx...), for all others use <httpErrors>: http://www.iis.net/ConfigReference/system.webServer/httpErrors
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="ExecuteURL" defaultPath="/error.aspx?code=404">
<clear/>
<error statusCode="404" responseMode="ExecuteURL" path="/error.aspx?code=404"/>
</httpErrors>
</system.webServer>

how do i specify a custom error page without setting defaultPath on httpErrors in the web.config?

I'm currently working on deploying a asp.net website to a shared hosted environment, and this works as expected (404 pages render)
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/file-not-found.htm" responseMode="ExecuteURL" />
</httpErrors>
but this doesn't (500 internal server error)
<httpErrors errorMode="Custom" defaultPath="error.htm" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/file-not-found.htm" responseMode="ExecuteURL" />
</httpErrors>
I asked to take a look at the applicationHost.config and it has:
<httpErrors errorMode="Custom" defaultPath="C:\inetpub\custerr\en-US\SSLRedirect.htm" lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
So I'm assuming that the defaultPath as a locked attribute is the thing that's causing issues.
Because this is being deployed to a shared environment, the hosting company is not willing to modify the applicationHost.config to remove the lock on defaultPath - so is there any way to specify a default error page without unlocking the defaultPath attribute?
In global.asax you could just implement Application_Error() and redirect to wherever you want?

Resources