2012-08-07 1 views
0

두 사이트를 만들었습니다. 하나는 기본 사이트이고 다른 하나는 786 포트입니다. 이제 사용자가 URL을 열면 http://myurl.com/Applicationhttp://myurl.com:786/Application을 열어야합니다. IIS 7.5 다시 쓰기 모듈을 설치했습니다. 예를 들어 다른 방법으로 코드를 시도했습니다.내 사용자 지정 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을을 config (설정) 할 필요가있다.

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

이 문제를 해결할 수 있습니다.

관련 문제