루트에서 하위 디렉터리로 IIS7 URL 리디렉션 [닫힘]


83

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

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

나는 이것에 대한 어떤 도움을 정말로 고맙게 생각합니다.


프로그래밍과 서버 관리 사이에는 미세한 경계가 있습니다 ( "Dev Ops"의 인기로 인해 점점 더 모호 해지는 경계). 그럼에도 불구하고 Stack Overflow와 Server Fault는 두 사이트간에 명확한 구분을 유지하며이 콘텐츠는 프로그래밍보다 도구 (IIS) 구성에 관한 것이기 때문에 Server Fault에 속합니다.
machineghost 19

답변:


131

여기있어. 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>

2
응답 해 주셔서 감사합니다. 여전히 나를 위해 작동하지 않습니다. 먼저 이것을 wwwroot web.config에 추가했지만 거기에서 작동하지 않았습니다. 그래서 서버 수준 (서버> 사이트> 기본 웹 사이트)에서 URL 재 작성을 열었지만 여전히 작동하지 않습니다. 내가 여기서 뭔가 잘못하고 있니? 도와 주셔서 다시 한번 감사드립니다.
user881148

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

답장을 보내 주셔서 다시 한 번 감사드립니다. 위에서 언급 한 모든 내용을 확인했으며 추가 된 다른 규칙은 없습니다. 기본 웹 사이트> URL 재 작성을 통해 추가하려고했지만 작동하지 않았습니다. 또한 ASP.NET 경로 재 지정을 설정하지 않았습니다.
user881148

1
@mythofechelon 예, URL 재 작성 모듈은 IIS 10 (Windows 10 / Windows Server 2016)에도 번들로 제공되지 않으며 별도로 설치해야합니다.
LazyOne 2018-08-14

1
URL 끝에 /가 사용자에 의해 표시되는 경우 작동하도록 <match url = "^ \ /? $"/> 사용하는 것이 좋습니다.
Marijus Ravickas

47

IIS URL Rewrite 모듈 없이도 가능하다고 생각합니다. <httpRedirect>와일드 카드를 지원하므로 다음과 같이 구성 할 수 있습니다.

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

당신은 "HTTP 리디렉션"기능을 가질 필요가 있음을 참고 IIS에서 사용 - 참조 HTTP 리디렉션


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

16

나는 주로 그 코드를 어디에 입력 해야할지 몰랐기 때문에 받아 들여진 대답 으로이 작업을 할 수 없었습니다. 나는 모든 곳에서 URL 재 작성 도구에 대한 설명을 찾았지만 찾을 수 없었습니다. IIS에서 HTTP 리디렉션 도구를 사용하게되었습니다.

  1. 사이트 선택
  2. IIS 섹션에서 HTTP 리디렉션을 클릭합니다 (역할 서비스가 설치되어 있는지 확인).
  3. "이 대상으로 요청 리디렉션"을 선택하십시오.
  4. 리디렉션 할 위치를 입력하십시오. 귀하의 경우 "wwww.mysite.com/menu_1/MainScreen.aspx"
  5. Redirect Behavior에서 "요청을이 디렉토리 (하위 디렉토리가 아님)에있는 콘텐츠로만 리디렉션하지 않으면 루프로 이동합니다. 무엇이 적합한 지 확인하십시오.

도움이 되었기를 바랍니다.


1
이 솔루션에 문제가 있습니다. 로 리디렉션 / 다시 쓰기 http://server/로 설정하면 http://server/Folder/액세스 http://server/Folder(후행 슬래시 없음)는로 리디렉션되며 http://server/Folder/Folder404를 반환 할 가능성이 있습니다.
arid1

이 작업을 한 지 오래되었지만 그 일이 저에게 일어 났고 제 5 단계의 이유를 기억하는 것 같습니다. 확인 하셨나요?
Jarrod

1
솔직히 기억이 나지 않지만 그렇게 믿습니다. 위의 경우 IIS는 / Folder를 디렉터리 대신 파일로 간주하므로 하위 디렉터리로 리디렉션되고 "(하위 디렉터리 아님)"제외가 적용되지 않습니다.
arid1 2014-06-06

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 클라이언트에 제공되기 전에 "

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.