2012-08-07 49 views
0

我創建了兩個站點,一個是端口80,它是默認站點,另一個端口是786端口,現在我希望如果用戶打開url http://myurl.com/Application ,它應該打開http://myurl.com:786/Application。我已經安裝了IIS 7.5 Rewrite模塊。我用不同的方式嘗試代碼,例如如何將我的自定義URl重定向到ASP.Net中的特定端口IIS 7.5

<rule name="Red" stopProcessing="true"> 
     <match url=".*" /> 
    <conditions logicalGrouping="MatchAll"> 
          <add input="{HTTP_HOST}" pattern="www.myurl.com/Application" /> 

      </conditions> 

     <action type="Rewrite" url="http://{HTTP_HOST}:786/{R:0}" /> 
    </rule> 

回答

0

我認爲它喜歡301永久重定向。 您可以使用HttpModule來執行此操作。

public class CustomHttpModule : IHttpModule 
{ 

    private HttpApplication app; 

    public void Init(HttpApplication context) 
    { 
     app = context; 
     app.AuthorizeRequest += App_AuthorizeRequest; 
    } 

    public void App_AuthorizeRequest(object sender, EventArgs e) 
    { 
     HttpRequest req = app.Request; 
     string path = req.Path; 

     // if starts with http://{HTTP_HOST} 
     if (path.StartsWith("http://{HTTP_HOST}", true, CultureInfo.CurrentCulture)) 
     { 
      string redirectUrl = path.Replace("http://{HTTP_HOST}", "http://{HTTP_HOST}:786"); 
      app.Response.StatusCode = 301; 
      app.Response.AddHeader("Location", redirectUrl); 
      app.Response.End(); 
     } 
    } 

    public void Dispose() 
    { 

    } 
} 

此外,您需要在system.webserver節點和system.web節點中配置此HttpModule。

0
<add input="{REQUEST_URI}" matchType="Pattern" pattern="^/Application$" ignoreCase="true" negate="false" /> 

這隻能解決問題。

相關問題