private const string REQUESTED_URL_QUERYSTRING_PREFIX = "?404;";
protected void Page_Load(object sender, EventArgs e)
{
string redirectUrl = GetRedirectUrl();
if(!string.IsNullOrEmpty(redirectUrl))
{
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", redirectUrl);
Response.End();
}
}
private string GetRedirectUrl()
{
LinkItemCollection permanentRedirects =
CurrentPage.GetValue("PermanentRedirectLinks")
as LinkItemCollection;
if(permanentRedirects == null)
return null;
if(!Request.RawUrl.Contains(REQUESTED_URL_QUERYSTRING_PREFIX))
return null;
string requestedUrl = Request.RawUrl.Substring(
Request.RawUrl.IndexOf(REQUESTED_URL_QUERYSTRING_PREFIX)
+ REQUESTED_URL_QUERYSTRING_PREFIX.Length);
requestedUrl = requestedUrl.Replace(":80/", "/");
requestedUrl = requestedUrl.Replace(":443/", "/");
string redirectUrl = null;
foreach (LinkItem permanentRedirect in permanentRedirects)
{
if (permanentRedirect.Text.ToLower().Trim()
== requestedUrl.ToLower())
{
PermanentLinkMapStore.TryToMapped(
permanentRedirect.Href, out redirectUrl);
}
}
return redirectUrl;
}