Search code examples
httphttp-status-code-404sitecoresitecore6http-status-code-302

Sitecore uses "302 found" to redirect users to my custom 404 page - is that legitimate?


This is more of a HTTP spec question than a Sitecore question.

I have a 404 error page set up in Sitecore:

<setting name="ItemNotFoundUrl" value="/404.aspx" />

So, when a user accesses a non-existent page (e.g. www.example.com/xyz) they get redirected to my custom 404 page (e.g. www.example.com/404.aspx).

Sitecore performs the redirect using a 302 as seen in the Firebug screenshot below:

302 found redirect to 404 file not found

Is this a problem? i.e. will Google and other search engines index my 404 page at the URL www.example.com/xyz? The site in question was originally set up to return "200 OK" responses from the 404 page (bad!) and so search engines have been indexing the sites 404 page whenever they've found a broken link into the site.

I'd assume that since 302 is just a redirect, the status code at the final (custom 404) URL will be what any client is supposed to assume applies to the initial (redirecting) URL.

If this isn't a problem, what's the canonical spec / documentation that makes that clear?


Solution

  • That is a problem indeed. Because google will now think the 404.aspx page does not exist and will think the non-existing item is temporarily redirected.

    I came up with a solution for this and blogged about it here.

    What it does basically is determine that the item is non-existing (through a pipeline processor), then retrieve the contents of the 404 page by requesting it using a WebRequest and return that contents to the browser with a 404 status code.