2011-08-10 2 views
64

IIS7과 함께 Windows Server 2008을 사용하고 있습니다. www.mysite.com에 오는 사용자를 wwww.mysite.com/menu_1/MainScreen.aspx으로 리디렉션해야합니다. 다음은 프로젝트에 대한 파일 구조입니다 :IIS7 URL에서 하위 디렉터리로의 리디렉션

-Sites 
-Default Web Site 
    -Menu_1 
    -MenuService 
    -VscWebService 

정말 감사드립니다.

답변

93

여기 있습니다. 당신의 web.config 파일에이 코드를 추가

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="Root Hit Redirect" stopProcessing="true"> 
       <match url="^$" /> 
       <action type="Redirect" url="/menu_1/MainScreen.aspx" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

그것은 301 영구 리디렉션 (브라우저에서 변경 될 URL을) 할 것입니다.

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="Root Hit Redirect" stopProcessing="true"> 
       <match url="^$" /> 
       <action type="Rewrite" url="/menu_1/MainScreen.aspx" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
+0

응답 해 주셔서 감사합니다. 그것은 여전히 ​​나를 위해 작동하지 않습니다. 먼저 이것을 wwwroot web.config에 추가하고 거기에서 작동하지 않았습니다. 그래서 나는 Server Level (Server> Sites> Default Website)에서 URL Rewrite를 열었지만 여전히 작동하지는 않습니다. 내가 여기서 뭔가 잘못하고있는거야? 도와 줘서 고마워. – user881148

+1

@ user881148 규칙이 제대로 작동합니다. 게시하기 전에 테스트를 거쳤습니다. 1) 잘못된 주문/장소에 배치되었을 수 있습니까? 규칙의 순서가 중요합니다. 이미 규칙이있는 경우이 규칙을 다른 규칙보다 먼저 추가하십시오. 2) _ "서버> 사이트> 기본 웹 사이트"_ - 서버 수준이 아닙니다. IIS 설치 프로그램에서 생성 한 기본 웹 사이트입니다. 3) GUI (IIS 관리자)를 통해이 규칙을 수동으로 만들어보십시오. 간단합니다. 채울 필드는 거의 없습니다. 4) 아마 ASP.NET 라우팅은 모든 다시 쓰기를 처리하고 URL 다시 쓰기 모듈을 무시합니다. 어떻게 든이 순간을 확인하십시오 (죄송합니다, ASP.NET이 좋지 않습니다). – LazyOne

+0

답장을 보내 주셔서 다시 한 번 감사드립니다. 위에서 언급 한 내용을 모두 확인했는데 다른 규칙이 추가되지 않았습니다. 나는 이것을 Default Website> URL Rewrite를 통해 추가하려고 시도했으나 작동하지 않았다. 나 또한 모든 ASP.NET 재 라우팅 설정이 필요하지 않습니다. – user881148

4

당신이 필요합니다 : 당신은 가지고 싶은 경우에이 규칙을 사용, "리디렉션"보이지 않는 (재 작성, 내부 리디렉션)로 (유일한 차이점은 "리디렉션"는 "다시 쓰기"로 대체되었습니다이다) Microsoft에서 다운로드하려면 http://www.microsoft.com/en-us/download/details.aspx?id=7435.

이 도구는 "IIS 7 용 Microsoft URL 다시 쓰기 모듈 2.0"이라고하며 Microsoft에서는 다음과 같이 설명됩니다. "URL 재 작성 모듈 2.0은 웹 서버에서 처리하기 전에 요청 된 URL을 변경하기위한 규칙 기반 다시 쓰기 메커니즘을 제공합니다 HTTP 클라이언트에 서비스를 제공하기 전에 응답 내용을 수정하는 경우 "

12

주로이 코드를 입력 할 위치를 알 수 없기 때문에 허용 된 대답으로이 작업을 수행하지 못했습니다. 나는 의미있는 URL 재 작성 도구에 대한 설명을 보았지만 아무 것도 찾을 수 없었다. IIS에서 HTTP 리디렉션 도구를 사용하여 종료되었습니다.

  1. 사이트 선택
  2. 클릭 HTTP는
  3. 점검
  4. 리디렉션 할 위치 입력 "이 대상에 요청을 리디렉션"IIS 섹션에서 리디렉션 (역할 서비스가 설치되어 있는지 확인합니다). "wwww.mysite.com/menu_1/MainScreen.aspx"
  5. 리디렉션 동작에서 "이 디렉터리 (하위 디렉터리가 아님)의 콘텐츠로만 요청을 리디렉션해야합니다. 또는 루프로 이동해야합니다. . 무엇을 당신을 위해 일하는 참조

희망이 도움이

+0

이 솔루션에 문제가 있습니다. 'http : // server /'를'http : // server/Folder /'로 방향 전환/재 작성하도록 설정하면'http : // server/Folder' (후행 슬래시 없음)에 액세스하면'http :/server/Folder/Folder'를 입력하면 404가 반환 될 것입니다. – arid1

+0

이 작업을한지 얼마되지 않았습니다. 그러나 저에게 일어난 일과 내 단계 # 5의 이유를 기억하는 것 같습니다. 체크 했니? – Jarrod

+1

솔직히 기억이 안나지만 그렇게 믿습니다. 위의 경우에는 IIS 대신/Folder가 디렉토리가 아닌 파일로 표시되므로 하위 디렉토리로 리디렉션되고 "(하위 디렉토리가 아님)"제외는 적용되지 않습니다. – arid1

32

을 나는이 IIS의 URL 재 작성 모듈없이 할 수있는, 생각 <httpRedirect>는 와일드 카드를 지원합니다, 당신이 이런 식으로 구성 할 수 있도록 :...

<system.webServer> 
    <httpRedirect enabled="true"> 
     <add wildcard="/" destination="/menu_1/MainScreen.aspx" /> 
    </httpRedirect> 
    </system.webServer> 

IIS에서 "HTTP 리디렉션"기능 사용 - HTTP Redirects

+0

이것은 완벽하게 작동합니다. – Nick

관련 문제