Чтобы уменьшить количество внешних ссылок на вашем сайте достаточно перенаправлять их через внутренний обработчик (handler):
1. Создаем Generic Handler - Redirect.ashx
2. Определяем метод ProcessRequest:
public void ProcessRequest(HttpContext context)
{
var url = context.Request.QueryString["Url"]; // принимаем на вход url через Query параметр
if (!string.IsNullOrEmpty(url))
{
context.Response.Redirect(url); //перенаправляем на нужный url
}
}
3. И небольшой хелпер
public static class RedirectHelper
{
public static readonly Regex s_rgx = new Regex("]*href=[\"]*(?http[^\" ]*)[\"]*[^>]*>",
RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
public static string BindRedirect(string html)
{
if (string.IsNullOrEmpty(html))
return html;
return s_rgx.Replace(html, _Replace);
}
static string _Replace(Match m)
{
var src = m.Groups["src"];
var replace = VirtualPathUtility.ToAbsolute("~/Redirect.ashx") + "?Url=" + src.Value;
int index = m.Value.IndexOf(src.Value);
var res = m.Value.Substring(0, index) + replace + m.Value.Substring(index + src.Length);
return res;
}
}
4. При рендеринге html подставляем в RedirectHelper.BindRedirect(html).
5. Все ссылки, начинающиеся с "http://", например - "http://www.site.ru" заменятся на "/Redirect.ashx?Url=http://site.ru"