2016-09-20 2 views
0

단일 웹 사이트가 domain.com에 바인딩되어 있고 domain.com/app1, domain.com/app2 등으로 액세스되는 여러 IIS 응용 프로그램이 포함 된 IIS 8.5 설치 프로그램이 있습니다.IIS 응용 프로그램에 대해 URL 다시 쓰기 규칙을 올바르게 적용하는 방법

이러한 응용 프로그램은 각각 동일한 물리적 경로를 가리키며 모두 web.config를 공유합니다. 이것은 특정 CMS 구성입니다.

각 응용 프로그램이 공유하는 web.config에 일반적인 URL 다시 쓰기 규칙 (HTTPS로 리디렉션, 소문자 사용, 후행 슬래시 추가 등)을 적용했지만 이러한 규칙은 응용 프로그램 이름 뒤에있는 URL에만 적용됩니다. 나는이 규칙은 표준 규칙이 URL 재 작성 GUI를 사용하여 추가 할 수 있습니다

<rewrite> 
    <rules> 
    <rule name="Enforce lowercase" stopProcessing="true"> 
     <match url="[A-Z]" ignoreCase="false" /> 
     <action type="Redirect" url="{ToLower:{URL}}" redirectType="Permanent" /> 
    </rule> 
    <rule name="Add trailing slash" stopProcessing="true"> 
     <match url="(.*[^/])$" /> 
     <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     </conditions> 
     <action type="Redirect" url="{R:1}/" redirectType="Permanent" /> 
    </rule> 
    <rule name="Redirect to HTTPS" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="^OFF$" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> 
    </rule> 
    </rules> 
</rewrite> 

따라서, 예를 들어, http://domain.com/APP1/PATHhttps://domain.com/APP1/path/로 리디렉션합니다. 또한 https://domain.com/app1https://domain.com/app1/으로 리디렉션되지 않습니다.

HTTPS 규칙은 괜찮지 만 특정 URL (app1, app2 등)을 처리해야한다는 것을 염두에두고 전체 URL에서 작동하도록 다른 2 가지 규칙을 어떻게 구성 할 수 있는지 내게 알려줄 수 있습니다. 일반적으로.

UPDATE 내 요구에 충분

내가 (서버 수준에서) IIS에서 전역 규칙을 사용하여 소문자 URL을 적용 할 수 있음을 발견했습니다. 그러나 후행 슬래시 추가/제거에 대한 웹 사이트 수준 규칙을 복제하는 것은 불가능한 것 같습니다.

답변

0

작업 URL 만 변경하면됩니다.

<rule name="Add trailing slash" stopProcessing="true"> 
     <match url="(.*[^/])$" /> 
     <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}/" redirectType="Permanent" /> 
    </rule> 
+0

죄송합니다.이 경우 규칙이 실행되지 않기 때문에 루트 URL (예 : https://domain.com/app1)에 후행 슬래시를 추가하면 도움이되지 않습니다. – getsetcode

+0

이것은 내 웹 사이트에서 사용하는 규칙입니다. 왜 저에게 효과가 있고 왜 효과가 없을지 잘 모르겠습니다. 어쩌면 다른 규칙에 방해가되는 것입니까? – Henry

+0

다시 테스트하면 해당 규칙이 상대 경로에서만 작동하므로 domain.com을 domain.com/ (또는 내 경우 domain.com/app/domain.com/app)로 리디렉션하지 않습니다./응용 프로그램이 IIS 응용 프로그램이기 때문에 /) – getsetcode