1

Мы используем приложение CMS, разработанное в asp.net 4 с расширением URL rewrite. В нашем приложении размещены тысячи страниц CMS и в решении Response.Redirect было многократно использовано с URL-адресами, содержащими буквы UPPER CASE. Об использовании правила перезаписи URL-адресов для преобразования запрошенных URL-адресов в нижний регистр, вызывающий код статуса 301 для любой страницы с буквой Upper Case в URL-адресе, что не подходит для перспективы SEO.Response.Redirect Interception

Так что я ищу способ перехватить все ответы Response.Redirect из одного местоположения, то есть из глобального файла, и преобразовать их в нижний регистр, а затем перейти в файлы кода и преобразовать все URL-адреса в response.redirect метод для нижнего регистра.

+0

Возможно, вы можете обрабатывать application_beginrequest или application_prerequesthandlerexecute в файле global.asax? – Monah

+0

yap thats wat I m ​​с нетерпением жду, чтобы реализовать IHttpModule с логикой, чтобы перехватить эти вызовы переадресации. –

+0

проверьте эту статью, которая может помочь вам, надеюсь, http://msdn.microsoft.com/en-us/magazine/cc301704.aspx – Monah

ответ

0

После того, как вы попали в MSDN и выкапывали Response.Redirect задает местоположение заголовка, который поддерживает get/set.

void Application_EndRequest(object sender, EventArgs e) 
{ 
    HttpApplication application = sender as HttpApplication; 
    HttpContext context = application.Context; 

    if (context.Response.IsRequestBeingRedirected) 
    { 
     string redirectedLocation = context.Response.Headers["Location"]; 
     context.Response.Headers["Location"] = redirectedLocation.ToLowerInvariant(); 
    } 

} 
Смежные вопросы