2012-03-13 2 views
0

내가 지금처럼 IISS URLRewriter를 사용하여 내 웹 응용 프로그램 IN- 및 아웃 바운드 내부 URL을 작성하는 노력하고있어,IIS URL 재 작성 아웃 바운드 PostBackUrls

^([A-Za-z0-9]+)([\?A-Za-z0-9=&]+)?$ 많은 :

www.domain.net/SomeSite.aspxwww.domain.net/SomeSite에 인바운드이 정규식을 사용하여 놀랍게도,이 사실이 재 작성 작업 사용 등 www.domain.net/SomeSite.aspx?abc=1 =>www.domain.net/SomeSite?abc=1 같은 URL에 대한 또한, 작동 : {R:1}.aspx?{R:2}

을하지만 사용자가 실제로를 볼 수 있도록 지금, 아웃 바운드, 나는 같은 효과를 가지고 싶습니다210 내 웹 응용 프로그램이 ~/SomeSite.aspx를 내부적으로 참조 할 수 있습니다.

나는 그것에 대해 다음과 같은 정규식 사용

^([A-Za-z0-9]+).aspx([\?A-Za-z0-9=&#]+)?$을 그래서 같은 URL 재 작성 :이 슬프게도, 그것은 예를 들어, 위해하지 않는 작품, 일반적으로 /{R:1}{R:2}

Response.Redirect은 CodeBehind에서 실행되며 PostBackUrl s는 asp:Button에서 작동하지 않습니다.

누구든지이 아웃 바운드 규칙을 다시 작성하는 방법을 알고 있으므로 참조 된 방법에 관계없이 모든 링크를 실제로 잡을 수 있습니까?

감사합니다,

데니스

편집 :

몇 가지 예를 내가 생각했던 내가 확실히 밝혀지지 않았다 가정 이후 :

사용자가 브라우저에서 www.domain.com/Login를 입력, 인바운드 규칙 catch하고 www.domain.com/Login.aspx로 리디렉션되고 주소 표시 줄에 /Login이 표시되면이 동작이 정상입니다.

그러나 PostBackUrl이 포함 된 ASP : 버튼 Login.aspx을 클릭하면 주소 표시 줄에 Login 대신 주소 Login.aspx이 표시됩니다. 정확하게이 동작을 얻으려면 어떻게해야합니까?

+0

왜 Post.Upx 대신 PostBackUrl을/Login으로 변경하지 않습니까? 나는 생각한다 * 적어도 정상적인 앵커 태그를 처리하는 방법이다. (아웃 바운드를 저장하면된다.) – ianbailey

+0

그래, 그럴 수도 있겠지만, 그렇게해야 할 때부터 놀랍도록 불편할 것이다. 내 개발 서버 대신 IIS에서 디버깅. –

답변

0

내가 알아야 할 것은 인바운드 리디렉션 규칙을 추가하고 두 규칙 모두에 대해 stopProcessing을 true로 설정해야한다는 것입니다. 결과는 다음과 같습니다.

<rules> 
     <rule name="Clean URL" stopProcessing="true"> 
      <match url="^([A-Za-z0-9]+)([\?A-Za-z0-9#=&amp;]+)?$" /> 
      <action type="Rewrite" url="{R:1}.aspx{R:2}" /> 
     </rule> 
     <rule name="CleanTest" stopProcessing="true"> 
      <match url="^([a-z0-9/]+).aspx([a-zA-Z0-9\?#=&amp;]+)?$" /> 
      <action type="Redirect" url="{R:1}{R:2}" /> 
     </rule> 
</rules>