使用HttpHandler重定向子文件夹

时间:2012-09-19 04:42:16

标签: c# asp.net httphandler

我在www.mydomain.com上有我的网站asp网页,博客在www.mydomain.com/blog内。我不得不将博客移动到子域,因此我需要编写一个模块来将博客中任何页面的任何调用重定向到新的子域。

它可以在我的机器上运行,但不能在我上传到共享主机时使用。有什么想法是错的吗?

我写了以下代码

    public void ProcessRequest(HttpContext context)
{
    string sourceUrl =  @"www.mydomain.com/blog";// @"localhost:51393/blog"
    string destinationUrl = @"blog.mydomain.com/blog"; 
    string currentLocation = context.Request.Url.AbsoluteUri;
   if(currentLocation.ToLower().Contains(sourceUrl))
   {
       System.Web.HttpContext.Current.Response.Clear();
       System.Web.HttpContext.Current.Response.StatusCode = 301;
       System.Web.HttpContext.Current.Response.AddHeader("Location", currentLocation.Replace(sourceUrl, destinationUrl));
       System.Web.HttpContext.Current.Response.End();           
   }
}

并添加了这些处理程序

 <httpHandlers>
  <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
  <add verb="*" path="*" type="MyHandler,App_Code.dll"/>

非常感谢任何帮助。

我知道它与这个httpHandler - subfolder issue非常相似,但它不起作用。

1 个答案:

答案 0 :(得分:2)

只需使用IIS重写

以下是将1个网址重定向到另一个网址的类似代码。很少调整会做到这一点。我使用了我的smarterasp.net托管帐户。

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect to WWW" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^domain.com$" />
          </conditions>
          <action type="Redirect" url="http://www.domain.com/{R:0}"
               redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>