Administration: Custom error pages
Adding a custom error page in your web application is crucial for your site. Otherwise, when your system fails or a page is not found, your users will see the standard IIS "yellow screen of death". The solution is to add custom error page to your web application. Follow the steps in this article in order to configure custom error pages in your Sitefinity CMS web application.
Configure a custom error page
To configure the display of custom error pages, use the following procedure:
- Open the web.config file that is located in your project’s folder.
- Find <customErrors> section.
- Set customErrors mode to one of the following:
- On
Custom error page is shown to all visitors, regardless of whether they are local or remote. - RemoteOnly
Custom error page is shown to remote visitors, while the error stack trace is shown to local visitors.
- You can specify a custom page to be displayed for every error code, by using the following syntax in <customErrors> section:
<error statusCode="403" redirect="URL of custom 403 error page" />
<error statusCode="404" redirect="URL of custom 404 error page" /> - Save and close the web.config file.
EXAMPLE: The following is an example of a <customErrors> section:
<
customErrors
mode
=
"RemoteOnly"
defaultRedirect
=
"http://mywebsite.GenericErrorPage.htm"
>
<
error
statusCode
=
"403"
redirect
=
"http://mywebsite.NoAccess.htm"
/>
<
error
statusCode
=
"404"
redirect
=
"http://mywebsite.FileNotFound.htm"
/>
</
customErrors
>
NOTE: The defaultRedirect attribute is optional. You can use it to specify the URL of the custom error page that is shown by default.
Change the response status of the custom error page
If you plan to use any Sitefinity CMS page as a custom error page, you must change the response status explicitly. The default is 200, instead of 400 and this is misleading for the search engines and SEO practice.
To do this, perform the following:
-
Add new user control to your SitefinityWebApp and name it NotFoundStatusCodeSetter.
- Go to the code-behind and add the following code:
public
partial
class
NotFoundStatusCodeSetter : System.Web.UI.UserControl
{
protected
override
void
Render(HtmlTextWriter writer)
{
if
(!
this
.IsDesignMode())
{
base
.Render(writer);
Response.Status =
"404 Not Found"
;
Response.StatusCode = 404;
}
}
}
The code above sets the response statues code to 404 only on the frontend. This is handled by the IsDesignMode method. You must add the status code at a latest possible moment - in this sample, in the Render event.
- Register the user control in the backend.
For more information, see Register a new widget in the backend. - In the Control CLR type or Virtual Path property, enter SitefinityWebApp.NotFoundStatusCodeSetter
In Name and in Title, enter NotFoundStatusCodeSetter. - Create a 404 page and add the NotFoundStatusCodeSetter to it.
- Save your changes.
The proper response status code is displayed when requesting a page that cannot be found.