Response.Redirect拦截

时间:2014-11-06 20:13:17

标签: asp.net http-status-code-301 httpmodule response.redirect intercept

我们正在使用在asp.net 4中开发的具有URL重写扩展的CMS应用程序。我们的应用程序托管了数千个CMS页面,并且在解决方案中,Response.Redirect已广泛用于包含大写字母的URL。  使用URL重写规则将请求的URL转换为小写,导致其URL中包含大写字母的任何页面的301状态代码,这对SEO透视图不利。

所以我期待一种方法来拦截来自单个位置的所有Response.Redirect调用,即从全局文件中调用,并将它们转换为小写,而不是转入代码文件并将所有URL转换为response.redirect方法小写。

1 个答案:

答案 0 :(得分:0)

进入MSDN并挖掘出Response.Redirect是设置位置Header,它支持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();
    }

}