2012-04-25 2 views
1

저는 ASP.NET 4/VB.NET/IIS를 사용하여 웹 응용 프로그램을 작성하고 있습니다. 사람들은 그래서 같은 URL을 통해 웹 응용 프로그램에 액세스합니다 :하위 디렉토리 URL 자동 다시 쓰기 규칙?

http://url.com/personname

따라서, 예를 들어, 여기에 각각 신원 미상, 홍길동, 제임스 미상의 URL입니다 :

http://url.com/janedoe

http://url.com/johndoe

http://url.com/jamesdoe

어떻게 든 다음 URL의 이름 부분으로 끌어와 데이터베이스에 대해 조회를 수행하는 데 사용하는 Default.aspx 페이지에 (상관없이 입력 어떤 이름) 그들을 통과하지 할 필요가

하는 정보가 포함되어 있습니다. 이 특정 인물에 관한 정보를 바탕으로 개인화 된 페이지를 표시합니다.

따라서, 예를 들어, 신원 미상의 방문 다음에 그녀는 투명하게 (위의 URL에서) 그녀의 이름에 당기는을 Default.aspx로 리디렉션됩니다

http://url.com/janedoe

및 검사를 데이터 베이스. 그녀가 사이트를 방문한 적이 없다는 것을 알게되면 그녀는 welcome.aspx로 투명하게 리디렉션되어 계정을 등록하라는 메시지가 나타납니다. "Hello Jane!" 등등 ...

다음에 제인 방문 그녀는에 간다 : 그녀는 투명 위의 URL에서 (그녀의 이름에 당기는을 Default.aspx로 리디렉션됩니다

http://url.com/janedoe

) 데이터베이스에 대해 점검합니다. 그녀는 전에 방문한 적이 있고 계정을 만들었고 login.aspx로 투명하게 리디렉션되어 지난 번에 만든 인증 자격 증명을 입력하도록 요청합니다.

+1

방금 ​​앱을 시작한다면 MVC를 살펴 보는 것이 좋습니다. 그것은 당신이 찾고있는 것을 정확하게합니다. – SouthShoreAK

+0

SouthShore - MVC를 몇 번 보았지만 웹 양식을 선호합니다. =) 나는 알고있다. 나는 이상한 사람이다. – davemackey

답변

1

먼저 Default.aspx 요청을 다시 작성해야합니다. 귀하의 IIS 버전 (다음은 IIS 7.5)에 따라 간단합니다. Web.config의에서, (섹션의 system.webServer에서) 규칙 (또는 사용자가 IIS 관리자를 사용할 수 있습니다)

<rewrite> 
    <rules> 
     <rule name="test" enabled="true" stopProcessing="false"> 
      <match url="^([a-zA-Z]*)$" /> 
      <action type="Rewrite" url="Default.aspx?u={R:1}" /> 
     </rule> 
    </rules> 
</rewrite> 

같은 것을 할 것이다. 정규식 [a-zA-Z]는 물론 비즈니스 규칙에 맞게 조정해야합니다. 숫자를 허용 할 수 있습니다.

이는 IIS 내부의 요청을 다시 작성하므로 브라우저에는 아무 것도 표시되지 않습니다. 이제 "투명하게 리디렉션"하고 싶습니다. 즉, 사용자의 이미 존재하는지 여부에 따라 브라우저의 URL이 변경되어야합니다.

는 Request.QueryString을 [ "U를"] 처리 뒤에, Default.aspx를 코드에서, 그것을 달성 데이터베이스 쿼리 결과에 따라

Response.Redirect("Welcome.aspx") or 
Response.Redirect("Login.aspx") 

에 의해 수행합니다.브라우저 URL을 변경하지 않으려면 Response.Redirect 대신 Server.Transfer를 사용하십시오.