public override void Process(HttpRequestArgs args) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); if (Redirector.Provider == null) { return; } if (Context.Site == null || Context.Database == null) { return; } if (Config.IgnoredSites.Contains(Context.Site.Name, StringComparer.OrdinalIgnoreCase)) { return; } if (Redirector.IsIgnoredPageMode()) { return; } if (Context.Item != null) { return; } IRedirect redirect = Redirector.Provider.LookupUrl(args.Context.Request.Path); if (redirect == null) { return; } if (!redirect.Enabled) { return; } if (Config.SiteContextChecking && redirect.Sites != null && !redirect.Sites.Contains(Context.Site.Name, StringComparer.OrdinalIgnoreCase)) { return; } string targetUrl = redirect.GetTargetUrl(Context.Site.Name); string redirectQueryString = redirect.QueryString; if (!string.IsNullOrEmpty(targetUrl)) { if (Config.LogProcessorStopwatch) { stopwatch.Stop(); Log.Info(string.Format("Redirect Manager: httprequest processor total time is : {0}ms ({1} ticks)", ((double)stopwatch.ElapsedTicks / (double)Stopwatch.Frequency * 1000.0).ToString("F"), stopwatch.ElapsedTicks), this); } if (string.IsNullOrEmpty(redirectQueryString)) { Redirector.Respond(args, redirect.ResponseStatusCode, redirect.ResponseStatusDescription, targetUrl); } else { Redirector.Respond(args, redirect.ResponseStatusCode, redirect.ResponseStatusDescription, targetUrl, redirectQueryString); } } }