Join us this Friday for AI in Action at the Virtual Happy Hour! This free virtual event is open to all—enroll now on Academy and don’t miss out.
Join us this Friday for AI in Action at the Virtual Happy Hour! This free virtual event is open to all—enroll now on Academy and don’t miss out.
How do you redirect to the error page?
Our solution has been to add this to the web.config httpErrors section:
<error statusCode="404" path="/404" responseMode="ExecuteURL" />
And registered a route for /404:
routes.MapRoute("404","404",new { controller = "Error", action = "NotFound" });
Inside the ErrorController we would still have the original info as we are still processing the same request from the client:
public ActionResult NotFound() { var pathAndQuery = Request.Url.PathAndQuery.ToLowerInvariant(); ... }
There might very well be nicer solutions out there though. :)
Hi Rajaa
You could take a look or even use the popular open source 404 handler for Episerver:
https://github.com/Geta/404handler
David
Hi,
Thank you for the help!
https://github.com/Geta/404handler was very good.
I redirect this way :
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="410" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Common/404/" responseMode="ExecuteURL" />
<error statusCode="410" prefixLanguageFilePath="" path="/Common/410/" responseMode="ExecuteURL" />
</httpErrors>
I have tried the
var pathAndQuery = Request.Url.PathAndQuery.ToLowerInvariant();
but then it gave me a string of a url, which seemed to be an impossible way to retreive a Pagedata going this way :( Am I wrong?
Am using the same ActionResult Method for all errors, 404, 410..and so on. the same viewModel and View. My goal wa to determine if the errorPage was triggered by a neverExisted Page, or by a page that has expired. coz i want to do differents things depending on the reason for the redirect. i Really hoped to get to the errorTriggererPage, using the current page (ErrorPage).
Thank you again:-)
// Rajaa
_urlResolver.Route(new UrlBuilder(url));
Normally gets you the PageData, but it probably won't work for an expired page, you can try to add a ContextMode as the second parameter to see if it helps.
Hello!1
Thnk you guys, really helpful!
I was over thinking it!
here is part of the solution:
if (language != null && errorLanguage != null && string.Compare(language.Name, errorLanguage.Name, StringComparison.InvariantCultureIgnoreCase) != 0) { ErrorPage currentSiteerrorPage = _contentLoader.Get<ErrorPage> (currentPage.ContentLink, language); if (currentSiteerrorPage != null) { if (pathAndQuery.ToLower().Contains("/archive")) // && !pathAndQuery.Contains("/oldpage") { Response.Status = "410 Gone"; _context.HttpContext.Response.StatusCode = 410; return View(currentSiteerrorPage.DefaultViewPath, _pageViewModelFactory.CreateViewModel(currentSiteerrorPage)); } _context.HttpContext.Response.StatusCode = 404; return View(currentSiteerrorPage.DefaultViewPath, _pageViewModelFactory.CreateViewModel(currentSiteerrorPage)); } }
Thank you1
// Rajaa
Hi,
I Am trying to get the page that redirected to my ErrorPage, so i can do things with it :
it should be somethink Like this
Am new to backend Dev. and new to Epi. Has anyone tried to solve this before? Any Ideas?
Thnx,
// Rajaa