2016-09-16 4 views
0

내 web.config에서 리디렉션 규칙을 작성하고 싶습니다. 나는 아래의 실행을 추가했지만 작동하지 않는 것 web.config의 IIS url 리디렉션 규칙

http://www.example.net/profile/username

...

http://www.example.net/#/profile/username

내가 좋아하는 URL을 리디렉션 할

.... 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

<rule name="Redirect to hashed profile" stopProcessing="true"> 
      <match url="(.*)" /> 
      <conditions> 
       <add input="{HTTP_HOST}{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="^.net/profile/*"/> 
      </conditions> 
      <action type="Redirect" url="https://{HTTP_HOST}/#/{REQUEST_URI}" redirectType="Permanent" appendQueryString="true" /> 
     </rule> 

답변

1

다음은 현재 진행 상황과 해결 방법입니다. www.example.com 당신의 HTTP_HOST의 시작 부분에

pattern="^.net/profile/*" 

^ 앵커 텍스트 그래서 ^.net는 URL이 어떤 한 문자 . 다음 단어 net로 시작해야 함을 의미합니다. 난 당신이 또한 슬래시의 끝에서 /* 또한 \/에과를 탈출해야 \.

로 탈출해야 그렇게하기 위해, 당신은 당신이 리터럴 . 일치하고 싶었 의미 가정거야 다만 경기 무제한 슬래시를 의미하지만, 당신의 웹 사이트가 .net

로 시작하지 않기 때문에 우리가 ^를 사용할 수의 그 패턴을 다시 보자 당신은 슬래시 제한 시간 이후 모든 문자를 일치 시키려면, 그래서 .*

그래서

pattern="\.net\/profile\/.*" 
은 {HTTP_HOST}

이 .. 당신에게

<add input="{HTTP_HOST}{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="\.net\/profile\/.*"> 

을 줄 것이다하지만 당신은 정말 필요합니까? 이 규칙이 전역 규칙인지, 전역 ​​규칙이 아니며 응용 프로그램 수준인지 여부에 따라 달라집니다. 그렇다면 당신은 그것을 필요로하지 않습니다.

에 다시 추가하여 profile이라는 단어를 이와 같이 REQUEST_URI의 첫 번째 부분에 고정시킬 수 있습니다.

<add input="{REQUEST_URI}" pattern="on" ignoreCase="true" pattern="^profile\/.*">